Windows XPバッチファイルでは、FTPディレクトリリストを取得して、For /F
ループで処理しています。ファイル名を含む最後のトークンは、変数の最後の文字としてキャリッジリターン(0D)で終わります。キャリッジリターンによって私のIf
ステートメントが行の先頭に折り返されるので、トークンの値を使用しようとすると失敗します。環境変数 - XPコマンドラインからキャリッジリターンを取り除く
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
01-04-10 10:00AM 93882 Logo.jpg
02-05-10 11:01PM <DIR> PCODE
03-06-10 12:02PM 42333443 Saved stuff.zip
04-07-10 12:42PM 49343848 Stuff.zip
226 Transfer complete.
検査時に進エディタを使用して、各ラインではなく単に0D 0Aで、0D 0D 0Aで終了:
@echo off
for /f "tokens=1,4 delims=" %%A in ('ftp -s:dir.ftp') do (
if 'Stuff.zip'=='%%B' Set StuffDate=%%A
)
echo Stuff.zip was saved on %StuffDate%.
処理すべき内容は以下の通りです。余分な0Dがなぜそこにあるのか分かりませんが、私のプログラムが機能するためにそれを削除する必要があります。
%% BはStuff.zipに等しい実行中に、If
は次のようになります。
' Set ReleaseDate=04-07-10) 'Stuff.zip
:
(if 'Stuff.zip'=='Stuff.zip' Set ReleaseDate=04-07-10)
If
ラインが原因CRのこのように見える終わります039キャリッジリターンが処理されると、(if 'Stuff.zip'=='Stuff.zip
が上書きされます。
環境変数の最後に余分な0Dを取り除くにはどうすればよいですか?