私は何年もGoogleクロージャコンパイラで次のスクリプトを使用してきました。私はそれを見たことがなかった、それはちょうど働いた - 私はもともとどこからそれを持っていたのか分からず、私は理解していない部分もある。Windows 8バッチファイル:パスが切り捨てられていますか?
ただし、DIR
部分のファイルパスは正しく使用されません。代わりに、それは遠く離れたスーパーディレクトリを必要とします。つまり、上記の「dev」ディレクトリがc:\some\long\path\to\dev
にある場合、%%f
はc:\some\long\path\to\dev\output\someScript.js
の代わりにc:\some\long
が突然使用されます。
DIRパーツを個別に実行すると、完全な完全パスのリストが目的のファイルに完全に戻されます。 cmdからバッチスクリプトを実行すると、ダブルクリックで実行するのと同じエラーが発生します(どちらの方法も前に動作しました)。
スクリプトが最後に実行されてから現在まで、私が知っていることは何も変更していません。これはすべてWindows 8マシン上にあります。
@echo off
echo compressing files:
for /f %%f in ('DIR /b /s ..\..\dev\output\*.js') do (
echo %%~nxf
java -jar compiler.jar --charset UTF-8 --js "%%f" --js_output_file "..\..\files\%%~nxf"
)
set /p id="Done. Hit enter to close!"
何が問題なのですか?
追加 ' "delims ="' ' –
/F'後はお客様に@Noodlesに感謝します。 do( 'DIR/b/s .. \ .. \ dev \ output \ * .js ')do('! –
パスの正確なレポートを提供することをお勧めしますあなたの新しいパスは明らかに空白を含み、 'for/f'" tokenises "はデフォルトでスペースを区切り文字として使用し、最初のトークン(すなわちスペースまで)を' metavariabl'に割り当てます(この場合、 '% 'delims ='はデフォルトの区切り文字をオフにするので、行全体が '%% f'に配送され、' %% f'から 'N'ameとe'X'tensionだけが選択されます。 '%%〜nxf'を使用 – Magoo