2017-05-07 102 views
0

我正在嘗試製作批文件以將文件從文本列表複製到文件夾。該代碼被複制在這個論壇上,但它不起作用。批文件從文本文件中複製文件列表

文本列表在桌面上。

LIST.TXT

,幷包含,例如,

C:\用戶\桌面\測試\ item1.ipt
C:\用戶\桌面\測試\ item2.ipt
C:\ Users ... \ Desktop \ Test \ item3.ipt
C:\ Users ... \ Desktop \ Test \ item4.ipt
C:\ Users ... \ Desktop \ Test \ item5.ipt
C:\ Users ... \ Desktop \ Test \ item6.ipt

和我的批處理文件也在桌面上。

@echo off 
FOR /F "delims=" %%a IN (C:\Users\...\Desktop\list.txt) DO COPY "%%~a" "C:\Users\...\Desktop\Temp\%%~nxa" 

這兩個文件(批處理和txt)都在桌面上,所以我可以刪除文本文件的路徑嗎?

@echo off 
FOR /F "delims=" %%a IN (list.txt) DO COPY "%%~a" "C:\Users\...\Desktop\Temp\%%~nxa" 

感謝您的幫助。

編輯:理念是獲取文本文件中的文件位置,因此文本文件中的目錄是變量。

+0

可能有[Batch:Copy a list(txt)of files](http:// stackoverflow。com/questions/6257948/batch-a-list-txt-of-files) – Trimax

+0

我看到了,Trimax,但它不一樣。我不想設置源代碼目錄。我想將所有行(文件路徑)複製到一個新文件夾中,所以源目錄是可變的... – helderez

+0

要在保存批處理文件的目錄中搜索文件,請使用'%〜dp0list.txt';只是使用'list.txt'表示'。\ list.txt'指向當前工作目錄,這不一定是相同的... – aschipfl

回答

1
@echo off 
pushd "%userprofile%\Desktop" 
FOR /F "delims=" %%a IN (list.txt) DO COPY "%%~a" ".\Temp\%%~nxa" 
popd 

在上面的代碼片斷:

編輯。如果list.txt爲空,或者只包含空行和標準分隔符,或者如果它以某些控制字符開始,則'for/F'循環上面不做任何事情。 NULL字符,或者是否它被利用UTF-16編碼:保存

==> type null_and_data.txt 
1st line 
2nd 
3rd 

==> FOR /F "delims=" %a IN (null_and_data.txt) DO @echo "%~a" 

==> powershell -c "(type null_and_data.txt -Encoding byte -TotalCount 16) -Join ','" 
0,49,115,116,32,108,105,110,101,32,13,10,50,110,100,13 

==> 

一些上述情況(特別是,後者的一個)可以可以通過使用type command如下解決:

@echo off 
pushd "%userprofile%\Desktop" 
FOR /F "delims=" %%a IN ('type list.txt') DO COPY "%%~a" ".\Temp\%%~nxa" 
popd 

例如:

==> FOR /F "delims=" %a IN (fileUTF16LEBOM.txt) DO @echo "%~a" 

==> type fileUTF16LEBOM.txt 
x 
y 

==> FOR /F "delims=" %a IN ('type fileUTF16LEBOM.txt') DO @echo "%~a" 
"x" 
"y" 

==> 
+0

謝謝,JosefZ,但它不起作用。沒有錯誤消息,但沒有。 – helderez

+0

@helderez請參閱最新的答案。 – JosefZ

+0

謝謝,JosefZ。你是男人! – helderez

相關問題