我编写了一个非常基本的批处理脚本(最初工作),只是将文件从子目录复制到根目录(运行命令的根目录),如果需要,备份原始文件。下面是我的替换脚本。从%CD%\folder\
复制的文件与%FILE%
set /p backup=Do you want to backup your current file? (Yes or No):
set file=filename.cmd
if %BACKUP% == Yes (
if exist "%FILE%-backup" (
del "%FILE%-backup"
)
rename "%FILE%" "%FILE%-backup"
) else (
del "%FILE%"
)
xcopy "%CD%\folder\%FILE%" "%CD%"
如果用户选择备份文件,则可以将文件重命名为filename.cmd-backup
。
然而,在if语句结束时,我在通过CMD运行时遇到错误(我已将它对齐,因此更容易阅读,这是我的确切CMD输出):
if Yes == Yes (
if exist "filename.cmd-backup" (
del "filename.cmd-backup"
)
rename "filename.cmd" "filename.cmd-backup"
) else (
del "C:\path\to\file\filename.cmd"
)
The system can not find the file specified.
我错过了一些愚蠢的东西吗?
提前致谢。
答案 0 :(得分:1)
语法上一切都很好。我想重命名的文件是隐藏的,我没有意识到。
这两个选项,要么取消隐藏文件,要么更改为以下内容:
set /p backup=Do you want to backup your current file? (Yes or No):
set file=filename.cmd
if %BACKUP% == Yes (
if exist "%FILE%-backup" (
del "%FILE%-backup"
)
attrib -H "%FILE%"
rename "%FILE%" "%FILE%-backup"
) else (
attrib -H "%FILE%"
del "%FILE%"
)
xcopy "%CD%\folder\%FILE%" "%CD%"
答案 1 :(得分:0)
我认为问题是,当脚本降至xcopy
时,%file%
中的文件名不再存在。
如果您进行备份,则会将其重命名为filename.cmd-backup
,如果不进行,则会将其删除。
无论哪种方式,文件filename.cmd
都不再存在。