批处理脚本用于将所有可用驱动器中的文件复制到 USB

批处理脚本用于将所有可用驱动器中的文件复制到 USB

我有这个脚本

    for /f "skip=1 delims=" %%x in ('wmic logicaldisk get caption') do (
    copy "%%x\*.spt" "%drive%\mydiagtools"
)
pause

我需要它将扩展名为 SPT 的文件(我们的专有公司文件)从特定计算机上的所有可用磁盘复制到我的 USB 驱动器。

有人知道为什么它不起作用吗?这是我得到的输出:

F:\>for /F "skip=1 delims=" %x in
*.spt" "\mydiagtools" )

\*.spt" "\mydiagtools" )
The device is not ready.

\*.spt" "\mydiagtools" )
\*.spt
The filename, directory name, or v
        0 file(s) copied.

\*.spt" "\mydiagtools" )
The device is not ready.

\*.spt" "\mydiagtools" )
The device is not ready.

\*.spt" "\mydiagtools" )
\*.spt
The filename, directory name, or v
        0 file(s) copied.

\*.spt" "\mydiagtools" )
\*.spt
The system cannot find the path sp
        0 file(s) copied.

\*.spt" "\mydiagtools" )
\*.spt
The filename, directory name, or v
        0 file(s) copied.

F:\>pause
Press any key to continue . . .

非常感谢

编辑:更正了输出

答案1

您想使用 powershell 吗?请尝试以下脚本。

$copy=Get-PSDrive -PSProvider FileSystem  |  %{ Get-ChildItem $_.Root -Recurse -force  -ErrorAction SilentlyContinue| Where-Object {$_.Extension -eq '.spt'}} Copy-Item -Path $copy.Fullname -Destination  C:\xxxx\

在脚本的最后,请修改为您的 USB,然后以 powershell 形式运行。

答案2

以下代码应该可以工作:

for /f "skip=1" %%x in ('wmic logicaldisk get caption') do (
    copy "%%x\*.spt" "%drive%\mydiagtools"
)
pause

尽管%drive%对我来说没有任何价值,但问题似乎与有关delims=。没有它,我可以成功列出和复制驱动器的内容,而这delims=导致了不显示或复制任何文件的不良副作用。

(在 Windows 10 Enterprise x64 版本 1803 内部版本 10.0 下测试。17134.376

相关内容