У меня есть этот скрипт

    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 . . .

большое спасибо

редактировать: исправил вывод

2 ответа2

0

Вы хотели бы использовать 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.

0

Следующий код должен работать:

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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .