52

私は初心者なので、我慢してください...

.docバッチファイルを使用して、あるメインディレクトリのいくつかのサブディレクトリに散在しているすべてのファイルを別のディレクトリにコピーしようとしています。私は、filelist.txt以下を使用してコピーしたいこれらのディレクトリからすべてのファイル(数百あります)を取得することができました。

"C:\Main directory\sub directory" dir /b /s *.doc > "C:\Main directory\sub directory\filelist.txt"

それらを1つのディレクトリにxcopyするためにどのスクリプトを使用しますか?それらのファイル名を実際に取得しfilelist.txtてxcopyするコードを使用できますか?

参考までに、やりたいことをやっているように見えたので、下の質問を見てみましたが、うまくいきませんでした。

xcopyを使用して複数のディレクトリから1つのディレクトリにファイルをコピーする

また、この概念を本当に理解したいので、コードを分解して各項目の機能を教えてください。少なくとも、それを説明するリンクを含めてください。

4

6 に答える 6

65

バッチ ファイル ソリューションで

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

コードはそのように機能します。

パターンに一致forするディレクトリc:\sourceとサブディレクトリ内の各ファイルに対して、ファイル名を変数に入れ、次に各ファイルに対してファイルを宛先にコピーします/R(\*.xml)%%fdocopy %%fx:\\destination\\

Windows XP コンピューターでここでテストしたところ、とてもうまく機能しました。ただし、コマンドプロンプトに入力したため、%f上記のリンクされた質問で説明されているように、単一の変数名バージョンを使用しました。

于 2009-08-03T22:26:48.863 に答える
6

このようなことが、私が Powershell に切り替えた理由です。それを試してみてください、それは楽しいです:

Get-ChildItem -Recurse -Include *.doc | % {
    Copy-Item $_.FullName -destination x:\destination
}
于 2009-08-03T22:36:12.573 に答える
4

ブランドン、短くて甘い。また、柔軟性があります。

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

コピーラインとして。あなたがそれから何かを得たら私に知らせてください(コピー失敗atmをテストする立場にありません..)

于 2009-08-18T14:10:03.067 に答える
1

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
于 2009-08-04T00:12:07.340 に答える