无论我作为docopy插入什么,程序总是将文件从源复制到目标。 有谁知道如何修复它? 我想在插入' y'之后复制文件如果' n'插入。当然,我试过if else声明,但它也没有正常工作。毕竟,程序应该询问要重命名的文件的哪个部分。 我确定你很容易:)
set source="C:\Users\Desktop\Basic"
set destination="C:\Users\Desktop\CopyofBasic"
set renfiles="C:\Users\Desktop\CopyofBasic"
setlocal EnableDelayedExpansion
set /p docopy="Do You want to copy files? [Y/N]: "
if /i %%docopy%% == "%y%" (
goto :makecopy
)
if /i %%docopy%% == "%n%" (
goto :nagative
)
:makecopy
xcopy /s /v /h /k /z %source% %destination%
goto :renfiles
:negative
echo None files are copied.
goto :renfiles
:renfiles
cd %renfiles%
set /p var1="Insert part of filename to replace it: "
set /p var2="Insert new part of filename: "
set /p var3="Insert files fomrat: "
for /r %%G in (%var3%) do (
set "filename=%%~nxG"
ren "%%G" "!filename:%var1%=%var2%!"
)
echo Filenames have been already changed.
pause
答案 0 :(得分:1)
有两个问题:
条件不正确:
if /i %%docopy%% == "%y%"
当docopy
的值为 n 时,评估为:if /I %docopy% == "" (goto :makecopy )
这是错误的,因此被跳过了。下一个条件也发生了同样的事情,因此批处理文件中的下一个“指令”是:makecopy
标签。
拼写错误goto:nagative
(nAgative)
条件应如何:使用"
(或[
,]
)作为变量警卫,但不是%
):
if /i "%docopy%" == "y" (
goto :makecopy
)
if /i "%docopy%" == "n" (
goto :negative
)
@ Edit1:将条件评估更正为@aschipfl注意到。
答案 1 :(得分:0)