If statement 在body CMD中使用if-else

If statement 在body CMD中使用if-else,if-statement,for-loop,cmd,xcopy,If Statement,For Loop,Cmd,Xcopy,程序有2个参数1-文件夹名2-文件名,如果2-参数等于当前目录中的txt文件名,则返回消息else将所有txt文件复制到作为第一个参数给定的文件夹中 我就是这样尝试的 @echo off FOR %%f in (*.txt) do ( IF %%f==%2 ( ECHO PARAM 2 IS NOT COPIED ) ELSE xcopy %%f "%1\" ) ) FOR %%f in ("%1\*.txt") do echo %%f>>"%1\logcopy.txt"

程序有2个参数1-文件夹名2-文件名,如果2-参数等于当前目录中的txt文件名,则返回消息else将所有txt文件复制到作为第一个参数给定的文件夹中

我就是这样尝试的

@echo off
FOR %%f in (*.txt) do  ( IF %%f==%2  ( ECHO PARAM 2 IS NOT COPIED ) ELSE  xcopy %%f "%1\"  )
)
FOR %%f in ("%1\*.txt") do echo %%f>>"%1\logcopy.txt"
结果,程序无法发送消息并将所有文件复制到文件夹中

for %%f in (*.txt) do if /i "%%~ff"=="%~f2" ( 
    echo "%~2" is not copied
) else (
    xcopy /i "%%~ff" "%~1\."
)

对于每个.txt文件%%f,如果其名称和扩展名%%nxf与第二个参数匹配,则%2是第二个不带引号的参数,如果存在回显消息,否则,在任何情况下,使用指向目标文件夹的完整路径复制该文件,并将其指示为第一个参数

。当%%~nxf==%时,它会将所有文件复制到文件夹中~2@Lord_of_Games,当您传递文件的完整路径作为问题中指示的文本文件的第二个参数时,需要更改条件。答案已更新以检查完整路径。如果希望根据传递的参数的名称检查文件名,请将条件更改为%%~nxf===%~nx2