XP のコマンド プロンプトで実行するバッチ ファイルを作成しようとしています。特定の命名規則に従う特定のパスにあるファイルのリストを取得しようとしています。各ファイル インスタンスをコピーして静的な名前に変更し、転送フォルダーにドロップする必要があります。
送信フォルダにファイルが入るまで少し時間がかかることがあるので、前のファイルと重ならないように、次のファイルをコピーする前に確認する必要があります。追加のツールキットがインストールされていないため、SLEEP
またはを使用できません。ファイルが送信されるまでTIMEOUT
、セクションにループバックし続けるようにしています。START
%%x
ループに値セットを渡すfor
と、セクションに数回ループバックすると、START
その値が失われ、何も設定されないことに気付きました。そこで、値を保持する変数を設定しようとしました。
変数が正しく設定されていない、またはクリアされていないという問題があるようです。元々は最初のファイルを参照し続けていましたが、現在はまったく設定されていないようです。はECHO
正しい値を表示しますが、filename
変数はまだ空です。
これを行うより良い方法を知っている人はいますか?私はすでにこれに丸一日を無駄にしているので、あなたの助けを前もって感謝します!
これはバッチ ファイルです。
@ECHO "At the start of the loop"
@for %%x in (C:\OUTBOUND\customer_file*) do (
@ECHO "In the loop"
@ECHO "loop value ="
@ECHO %%x
SET filename=%%x
@ECHO "filename ="
@ECHO %filename%
@ECHO ...ARCHIVE OUTBOUND CUSTOMER FILE
archivedatafile --sourcefile="%filename%" --archivefolder="..\archivedata\customer" --retentiondays=0
IF NOT %ERRORLEVEL%==0 GOTO ERROR
PAUSE
:START
IF EXIST l:\OutputFile (
@ping 1.1.1.1 -n 1 -w 30000
GOTO START
) ELSE (
COPY %filename% l:\OutputFile /Y
IF NOT %ERRORLEVEL%==0 GOTO ERROR
PAUSE
)
)
GOTO END
:ERROR
@echo off
@ECHO *************************************************************
@ECHO * !!ERROR!! *
@ECHO *************************************************************
:END
SET filename=