30

SO でいくつかのスクリプトの例を見てきましたが、.txt リストからファイル名を読み取る方法の例を提供しているようには見えません。

この例は、A から B フォルダーにすべてのファイルをコピーするため、適切です。

xcopy c:\olddir\*.java c:\newdir /D /E /Q /Y

しかし、次のようなものが必要です。ここでは、ソース フォルダーと宛先フォルダーを実際に埋めることができます。

 @echo off
 set src_folder = c:\whatever\*.*
 set dst_folder = c:\foo
 xcopy /S/E/U %src_folder% %dst_folder%

の代わりにsrc_folder = c:\whatever\*.*、それら*.*はtxtファイルから読み取られたファイルのリストである必要があります。

ファイルリスト.txt(例)

file1.pds
filex.pbd
blah1.xls

誰かが私にそれを行う方法を提案できますか?

4

6 に答える 6

50

というファイル内のファイル名のリストが与えられた場合File-list.txt、次の行で目的が果たされるはずです。

@echo off
set src_folder=c:\whatever
set dst_folder=c:\target
for /f "tokens=*" %%i in (File-list.txt) DO (
    xcopy /S/E "%src_folder%\%%i" "%dst_folder%"
)
于 2011-06-06T21:24:48.573 に答える
20

Frank Bollack と sparrowt の回答を使用しようとしましたが、xcopy の /U スイッチが含まれていたため、成功しませんでした。/U は、ファイルが宛先に既に存在する場合にのみコピーされることを意味することを理解していますが、これは私には当てはまらず、元の質問者には当てはまらないようです。これは、verify の /V であることを意味している可能性があり、そのほうが理にかなっています。

/U スイッチを削除すると、問題が解決しました。

@echo off
set src_folder=c:\whatever
set dst_folder=c:\target
for /f "tokens=*" %%i in (File-list.txt) DO (
xcopy /S/E "%src_folder%\%%i" "%dst_folder%"
)
于 2015-06-26T05:34:26.227 に答える
3

これはそれを行います:

@echo off
set src_folder=c:\batch
set dst_folder=c:\batch\destination
set file_list=c:\batch\file_list.txt

if not exist "%dst_folder%" mkdir "%dst_folder%"

for /f "delims=" %%f in (%file_list%) do (
    xcopy "%src_folder%\%%f" "%dst_folder%\"
)
于 2011-06-06T21:24:38.493 に答える
1

これにより、ファイルの元のファイル ディレクトリも保持されます。

@echo off
set src_folder=c:\whatever
set dst_folder=c:\target
set file_list=C:\file_list.txt

for /f "tokens=*" %%i in (%file_list%) DO (
   echo f | xcopy /E /C /R /Y "%src_folder%\%%i" "%dst_folder%\%%i"
)
于 2016-12-09T11:18:21.980 に答える