我正在尝试编写一个批处理文件以在 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=