應用場景:下載系統中符合某些條件記錄的一批附件。
解決方法:用sql查詢這些附件的路徑,保存到一個文件中,用批處理讀取這個文件的每行內容,拷貝到新目錄中。
例如:
用sql查詢語句查詢出來的文件名稱、路徑兩個字段如下
文件名稱 文件路徑 1.txt d:\data\184a3217aeda61b8991ddd34fd1b45b6 2.txt d:\data\184bcf911e63fe61306973c497ea9a50
把上面內容保存到一個文本文件如d:\data.txt中。
寫一個批處理文件copyFile.bat,內容如下:
@echo off set "file_path=d:\data.txt" for /f "tokens=1,2" %%a in (%file_path%) do ( echo 複製文件 %%b 到 %%a copy "%%b" "d:\output\%%a" ) echo 文件複製完成! pause
執行後,會把d:\data\184a3217aeda61b8991ddd34fd1b45b6複製到d:\output並重命名爲1.txt,
把d:\data\184bcf911e63fe61306973c497ea9a50複製到d:\output並重命名爲2.txt
說明:
for /f 用於讀取文件內容和解析
tokens=1,2 批處理默認空格是分隔符,表示提取第一列、第二列(索引從1開始)
%%a %%b 對應於token後面的列數,有多少列就要有多少個輸出變量,並且各變量中的字母有順序
另外,使用delims可以指定符號作爲分隔符,切割字符串,默認只顯示前半部分。
@echo off for /f "delims=、" %%a in ("1、天氣") do echo %%a pause
輸出:1
@echo off for /f "tokens=2 delims=、" %%a in ("1、天氣") do echo %%a pause
輸出:天氣