私は初心者なので、我慢してください...
バッチファイルを使用して、あるメインディレクトリの複数のサブディレクトリに散らばっているすべての.doc
ファイルを別のディレクトリにコピーしようとしています。私はこれらのディレクトリからすべてのファイル(数百個あります)のfilelist.txt
を取得することに成功しました。
"C:\Main directory\sub directory" dir /b /s *.doc > "C:\Main directory\sub directory\filelist.txt"
それらを1つのディレクトリにxcopyするためにどのスクリプトを使用しますか?実際にそれらのファイル名をfilelist.txt
から取得してxcopiesするコードを使用できますか?
参考のために、下の質問を見てみましたが、それは私がやりたいことをしているように見えましたが、私にはうまくいきませんでした。
xcopyを使用して複数のディレクトリから1つのディレクトリにファイルをコピーする
また、この概念を本当に理解したいので、各項目が何をするのかを説明するコードを分解するか、少なくともそれを説明するリンクを含めてください。
XCOPYコマンドに再帰オプションを使用するだけです
xcopy c:\*.doc k:\mybackup /sy
/ sはそれを「再帰的」にします
このようなことが、Powershellに切り替えた理由です。試してみてください、楽しいです:
Get-ChildItem -Recurse -Include *.doc | % {
Copy-Item $_.FullName -destination x:\destination
}
ブランドン、短くて甘い。柔軟性もあります。
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をテストする立場にない)
また、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