批处理找不到特定文件,但打印的文件路径是否正确?

时间:2013-01-30 15:50:04

标签: batch-file cmd

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

我错过了一些愚蠢的东西吗?

提前致谢。

2 个答案:

答案 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都不再存在。