我已经寻找了解决方案,但这很奇怪,我无法准确找出问题所在。批处理文件无法正常工作,除非我正在观看
我有一个批处理文件,看起来很简单。在有两个文件的目录中,它应该删除一个,复制另一个文件,然后将其重命名为刚刚删除的文件被命名的内容。除了重命名之外,一切都似乎正常工作。它几乎看起来脚本运行两次,但我找不到任何这方面的实际证据。请看下面:
SET filepath="\\server-name\directory with a space\"
SET oldFile=filename.csv
SET curFile=filename_*.csv
REM ===Delete current filename.csv===
IF EXIST %filepath%%oldFile% DEL %filepath%%oldFile%
REM ===Copy all versions of .csv files that begin with filename_ to the Archive folder===
IF EXIST %filepath%%curFile% COPY /y %filepath%%curFile% %filepath%%Archive
REM ===Rename the .csv file beginning with filename_ to filename.csv===
IF EXIST %filepath%%curFile% RENAME %filepath%%curFile% %oldFile%
如果我手动运行这个,它似乎工作正常。但是,当我让它从计划任务调用时,它似乎运行两次...也就是删除filename.csv,将文件名_ *。csv复制到正确的位置,但似乎删除了第二个文件而不是重命名它。
正如我所说,我真的不清楚正在做什么。我试着将结果记录在输出文件中,但内部没有任何帮助。
任何人都可以看到我失踪的任何东西吗?
在此先感谢。
为了测试,插入'echo%filepath %% oldFile%' - 它输出'“\\ server-name \目录的空格\”filename.csv' - 可能不是你想要的。 Magoo的答案显示'set'的正确引用语法。 – zett42
非常感谢zett42,lit和Magoo帮助引用标记位置和更好的实践。我觉得这很有帮助,即使最终它没有完全解决根本问题。 :) – Night1505