Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 复制后如何使用批处理文件显示文件名_Batch File_Windows 10 - Fatal编程技术网

Batch file 复制后如何使用批处理文件显示文件名

Batch file 复制后如何使用批处理文件显示文件名,batch-file,windows-10,Batch File,Windows 10,我有一个批处理文件,它将所有文件从一个位置复制到另一个位置 但我想显示运行批处理文件时复制到其他位置的文件名 例如: copy /-y "%File%\Sample.exe" "%DestinationDrive%" 我在批处理文件中有上面的命令,但是当我运行批处理文件时,我在cmd窗口中得到的输出是“复制了1个文件” 相反,我需要像“Sample.exe copied”这样的输出 我怎样才能做到这一点呢?这里有两种简单的方法来实现这一点 更好的方法是避免使用临时文件,并将所有要复制的文

我有一个批处理文件,它将所有文件从一个位置复制到另一个位置

但我想显示运行批处理文件时复制到其他位置的文件名

例如:

copy /-y "%File%\Sample.exe"    "%DestinationDrive%"
我在批处理文件中有上面的命令,但是当我运行批处理文件时,我在cmd窗口中得到的输出是“复制了1个文件”

相反,我需要像“Sample.exe copied”这样的输出


我怎样才能做到这一点呢?

这里有两种简单的方法来实现这一点

更好的方法是避免使用临时文件,并将所有要复制的文件添加到脚本中的变量中,在本例中称为
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

临时文件方法:

使用要复制的文件创建一个文件:

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

以下是实现此目的的两种简单方法

更好的方法是避免使用临时文件,并将所有要复制的文件添加到脚本中的变量中,在本例中称为
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

临时文件方法:

使用要复制的文件创建一个文件:

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

,但您复制了一个文件,这样您就知道要复制的是什么。是否指定要在脚本中复制的每个文件?是的,我指定了每个文件名,但在运行脚本后,我将其作为复制的1个文件,因此您是否只希望复制某些文件或目录中的所有文件?但具体地说,我需要将其复制到目标文件夹的文件名是,但您是复制目录中的所有文件还是只复制特定文件?但您复制了一个文件,这样您就知道要复制的是什么。是否指定要在脚本中复制的每个文件?是的,我指定了每个文件名,但在运行脚本后,我将其作为复制的1个文件,因此您是否只希望复制某些文件或目录中的所有文件?但具体地说,我需要将其复制到目标文件夹的文件名是,但是您是复制目录中的所有文件还是只复制特定文件?对于单个文件,这是可以的,如果我们有多个文件需要复制,那么条件是什么。您可能只希望复制
文件…
,当
复制成功时:
复制/-y”%file%\%%i”“%DestinationDrive%”>nul&&echo复制了%%i
@Stephan是的,这似乎是个计划。更新!好小费!我不知道可以在批处理文件变量中存储分隔列表。这正是我所需要的。对于单个文件来说,这是可以的,如果我们有多个需要复制的文件,那么条件是什么。您可能只想复制
文件…
,当
复制成功时:
复制/-y”%file%\%%I”“%DestinationDrive%%>nul&&echo复制%%I
@Stephan yes,这似乎是个计划。更新!好小费!我不知道可以在批处理文件变量中存储分隔列表。这正是我所需要的。