我在使用windows 10。我目前的專案要求我將幾個TXT檔案合并成一個。問題是,這些TXT檔案的名稱都是一樣的,區別它們的是它們的檔案夾名稱。
例如:
Folder1
- 檔案夾有一個13位數的隨機名稱
- gpsdata.com
- gpsdata.txt 。
- 具有13位數字隨機名稱的檔案夾
- gpsdata.txt - 具有13位數隨機名稱的檔案夾
- gpsdata.txt
- gpsdata.txt 。
我試著用下面的BATCH命令,但它覆寫了檔案,最后我只得到了最后一個gpsdata.txt檔案的軌跡。
FOR /R C:FOLDER1 %%i IN (metadata.txt) DO X:GPSBabelgpsbabel -t
-i xcsv,style=C:mystyle.style -f %i -o gpx -F C:FOLDER2gpsdata.gpx
是否有辦法 "復制和合并 "這些txt檔案,然后通過.BAT用GPSBabel轉換為gpx?
謝謝
uj5u.com熱心網友回復:
FOR回圈似乎沒有產生你想要的結果。試著單獨構建FOR回圈,直到%%i像你期望的那樣出現。
FOR /R C:FOLDER1 %%i IN (metadata.txt) DO (ECHO %%~i)
你可能希望FOR回圈產生一個通往每個metadata.txt檔案的路徑。這是否產生了你所尋求的東西?
FOR /F "delims=" %%i IN ('DIR /S /B C:FOLDER1metadata.txt') DO (echo %%i)
這可能使代碼看起來像:
FOR /F "delims=" %%i IN ('DIR /S /B "C:FOLDER1metadata.txt") DO (
X:GPSBabelgpsbabel -t -i xcsv,style=C:mystyle.style -f "%%~i" -o gpx -F C:FOLDER2gpsdata.gpx
)
uj5u.com熱心網友回復:
不要使用for /R,也不要使用for /F和dir /S,因為你已經得到了一個平面的目錄結構。你需要的是for /D,或者for /F與dir一起,以便控制排序。
使用
for /F和dir的方法(由于/O:N,子目錄以字母方式排序):rem // Change into target directory: pushd "C:FOLDER1" && ( rem // 準備一個空的檔案 to begin with: copy nul "metadata.txt" > nul rem // Iterate over the immediate sub-directories: for /F "delims=" %%I in ('dir /B /A:D-L-H-S /O:N " ? ????????????"')做( rem // 檢查當前子目錄是否包含text file。 if 存在"%Igpsdata.txt" ( rem // Append the text file to the resultfile: 復制/B "metadata.txt" "%Igpsdata.txt" "metadata.txt" > nul ) ) rem // Return從目標目錄回傳。 popd )
使用for /D的方法(子目錄按照檔案系統回傳的順序進行迭代):
rem // 準備一個空的檔案 to begin with。
copy nul "C:FOLDER1metadata.txt" > nul
rem // Iterate over the immediate sub-directories:
for /D %%I in ("C:FOLDER1?????????????"/span>) do (
rem // 檢查當前子目錄是否包含text file。
if存在"%%~Igpsdata.txt" (
rem // Append the text file to the resultfile:
復制/B "C:FOLDER1metadata.txt" "%~Igpsdata.txt" "C:FOLDER1metadata.txt" > nul
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315727.html
標籤:
