如何使用批处理文件创建一个 USB,从其所连接的 PC 复制所有照片?

如何使用批处理文件创建一个 USB,从其所连接的 PC 复制所有照片?

我试过这样做,但没有效果

:: variables
/min
SET odrive=%odrive:~0,2%
set backupcmd=xcopy /s /c /d /e /h /i /r /y
echo off

for /r C:\ %f in (*.jpg) do @copy "%drive%\all\pics"

@echo off
cls

答案1

我试过这样做,但没有效果

您的批处理文件存在许多问题。


用于%

您需要%%在批处理文件中使用。%用于命令行。


使用 /min

:: variables
/min

/min- '/min' 未被识别为内部或外部命令、可运行程序或批处理文件。我不确定您要用这个做什么。


用于odrive

SET odrive=%odrive:~0,2%

是否odrive已定义?如果没有,则将设置为~0,2。无论如何都不会再次使用它。


用于backupcmd

set backupcmd=xcopy /s /c /d /e /h /i /r /y

你不使用backupcmd


用于for

echo off

for /r C:\ %f in (*.jpg) do @copy "%drive%\all\pics"

这不是 的有效用法for。您需要使用%%fnot %f

copy至少需要两个参数,源和目标。

已经%drive%定义了吗?

尝试以下for命令:

for /r C:\ %%f in (*.jpg) do @copy %%f "%drive%\all\pics"

FOR 命令的操作可以概括为......

  • 取一组数据
  • 使 FOR 参数 %%G 等于该数据的某些部分
  • 执行命令(可选择使用参数作为命令的一部分)。
  • 对每一项数据重复上述步骤

如果您在命令行而不是批处理程序中使用 FOR 命令,则只需使用一个百分号:%G 而不是 %%G。

来源为了


进一步阅读

答案2

尝试使用 /MIR 选项的 ROBOCOPY 命令。它会递归搜索所有文件夹并复制刚刚更新/新的文件。源目录结构将在目标上重新创建。用法例如

robocopy /mir <source path> <target path>

答案3

我一直认为越少越好。为什么不试试下面的方法呢?

xcopy /c/d/e/f/h/r/y c:\*.jpg .

笔记:

  • /e 暗示 /s
  • 由于目的地存在,因此不需要/i。
  • 仅指定 jpg 文件
  • “.”的目标表示当前目录,假设 bat 文件在 USB 上。

答案4

我知道这会让老话题复活,但是我在互联网上找到了这段代码(它被复制了很多次),但没有清楚地解释无意义的初始化%odrive%和非初始化%drive%

它不起作用,因为他们遗漏了一些代码。以下是修复方法:

代替:

SET odrive=%odrive:~0,2%

和:

SET odrive=%CD%
SET drive=%odrive:~0,2%

第一行将当前目录作为%odrive%,第二行删除前两个字符(例如C:)并将其分配给%drive%

请注意,该脚本假定它是从可移动驱动器运行的。因此,您只需将所有实例替换为%drive%.它就会同样有效。

相关内容