我有这个脚本
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)