【问题标题】:How to use the batch file for displaying the file name after copied复制后如何使用批处理文件显示文件名
【发布时间】:2018-07-18 19:29:09
【问题描述】:

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

但我想在运行批处理文件时显示正在复制到另一个位置的文件名。

例子:

copy /-y "%File%\Sample.exe"    "%DestinationDrive%"

我的批处理文件中有上述命令,但是当我运行批处理文件时,我在 cmd 窗口中得到的输出为“已复制 1 个文件”。

我需要像“Sample.exe 已复制”这样的输出。

我该怎么做?

【问题讨论】:

  • 但是你复制了 1 个文件,所以你知道你在复制什么。您是否在脚本中指定了要复制的每个文件?
  • 是的,我指定了每个文件名,但在运行脚本后,我将其作为 1 个文件复制,
  • 那么您是只想复制某些文件,还是复制目录中的所有文件?
  • 但特别是我需要它被复制到目标文件夹的文件名
  • 是的,但是您是复制目录中的所有文件还是仅复制特定文件?

标签: batch-file windows-10


【解决方案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

临时文件方法:

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

文件名.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

【讨论】:

  • 这对于单个文件来说是可以的,如果我们有多个文件需要复制,那么条件是什么。
  • 您可能只需要Copied ...,当copy 成功时:copy /-y "%File%\%%i" "%DestinationDrive%" >nul && echo Copied %%i
  • @Stephan 是的,这似乎是一个计划。更新了!
  • 不错的提示!我不知道您可以将分隔的 list 存储在批处理文件变量中。这正是我所需要的。
猜你喜欢
  • 2017-09-16
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多