1

我编写了一个非常基本的批处理脚本(最初可以使用),只需将文件从子目录复制到根目录(根目录是运行命令的位置),如果需要,备份原始文件。下面是我的替换脚本。从中复制的文件%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.

我错过了什么愚蠢的东西吗?

提前致谢。

4

2 回答 2

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%"
于 2013-01-30T18:08:37.383 回答
0

我认为问题是当脚本下降到xcopy时,文件名%file%不再存在。

如果您进行备份,则将其重命名为filename.cmd-backup,否则将其删除。

无论哪种方式,该文件filename.cmd不再存在。

于 2013-01-30T16:08:33.863 回答