我有一个批处理文件,它会将所有文件从一个位置复制到另一个位置。
但我想在运行批处理文件时显示正在复制到其他位置的文件名。
示例:
copy /-y "%File%\Sample.exe" "%DestinationDrive%"
我在批处理文件中有如上所示的命令,但是当我运行批处理文件时,我在cmd窗口中输出“1个文件被复制。”
而不是我需要像“Sample.exe复制”这样的输出。
我该怎么做?
答案 0 :(得分:1)
以下是实现此目的的两种简单方法。
更好方法是避免临时文件并将要复制的所有文件添加到脚本中的变量中,在本例中称为myfiles
。
我们只是遍历变量条目并处理每个条目。此示例还将copy
进程传递给nul
,这只允许您查看每个文件名的回显,而不是实际的复制过程。
@echo off
set myfiles="example.exe","example2.dll","example3.txt","example4.inf"
for %%i in (%myfiles%) do (
copy /-y "%file%\%%~i" "%DestinationDrive%" >nul && echo Copied %%~i
)
所以我的例子结果是:
D:\>simulate.cmd
Copied example1.exe
Copied example2.dll
Copied example3.txt
Copied example4.inf
Temp文件方法:
使用您要复制的文件创建一个文件:
<强>则Filename.txt 强>
file.txt
this_file.exe
example.dll
somefile.txt
然后创建一个批处理文件:
<强> batchfile.cmd 强>
@echo off
for /f "delims=" %%i in (filename.txt) do (
copy /-y "%File%\%%i" "%DestinationDrive%" > nul && echo Copied %%i
)
PS !! 我根据您的示例使用了/-y
,如果您想在不提示确认的情况下实际覆盖文件,请使用/y