файлы Копии пакетного файла с определенными расширениями из нескольких каталогов в один каталог

Хорошо... Я думаю, что одна из сильных сторон языка C является своей мобильностью и стандартностью, поэтому каждый раз, когда я нахожу некоторый "скрытый прием", в реализации я в настоящее время использую, я пытаюсь не использовать его, потому что я пытаюсь сохранить свой код C максимально стандартным и портативным.

48
задан Community 23 May 2017 в 02:26
поделиться

4 ответа

Things like these are why I switched to Powershell. Try it out, it's fun:

Get-ChildItem -Recurse -Include *.doc | % {
    Copy-Item $_.FullName -destination x:\destination
}
6
ответ дан 7 November 2019 в 12:16
поделиться

In a batch file solution

for /R c:\source %%f in (*.xml) do copy %%f x:\destination\

The code works as such;

for each file for in directory c:\source and subdirectories /R that match pattern (\*.xml) put the file name in variable %%f, then for each file do copy file copy %%f to destination x:\\destination\\

Just tested it here on my Windows XP computer and it worked like a treat for me. But I typed it into command prompt so I used the single %f variable name version, as described in the linked question above.

62
ответ дан 7 November 2019 в 12:16
поделиться

вы также можете использовать vbscript

Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder = "c:\test"
strDestination = "c:\tmp\"
Set objFolder = objFS.GetFolder(strFolder)

Go(objFolder)

Sub Go(objDIR)
  If objDIR <> "\System Volume Information" Then
    For Each eFolder in objDIR.SubFolders       
        Go eFolder
    Next
    For Each strFile In objDIR.Files
        strFileName = strFile.Name
        strExtension = objFS.GetExtensionName(strFile)
        If strExtension = "doc" Then
            objFS.CopyFile strFile , strDestination & strFileName
        End If 
    Next    
  End If  
End Sub 

сохранить как mycopy.vbs и в командной строке

c:\test> cscript /nologo mycopy.vbs
1
ответ дан 7 November 2019 в 12:16
поделиться

Брэндон, короткий и милый. Также гибкий.

set dSource=C:\Main directory\sub directory
set dTarget=D:\Documents
set fType=*.doc
for /f "delims=" %%f in ('dir /a-d /b /s "%dSource%\%fType%"') do (
    copy /V "%%f" "%dTarget%\" 2>nul
)

Надеюсь, это поможет.

Я бы добавил несколько проверок после копирования (используя '||'), но я не уверен, как "copy / v" реагирует, когда обнаруживает ошибку.

вы можете попробовать следующее:

copy /V "%%f" "%dTarget%\" 2>nul|| echo En error occured copying "%%F".&& exit /b 1

В качестве копии строки. дайте мне знать, если у вас что-то получится (не в состоянии проверить банкомат сбоя копирования ..)

4
ответ дан 7 November 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: