[英]batch read file name as a variable and then use the variable in another batch process
我有一個簡單的.txt文件(myfile.txt),其中包含同一目錄中300多個文件的名稱。 每行包含一個文件的名稱,並且每個文件名都有空格-類似於:
file number one.txt
file number two.txt
file number three.txt
....
file number three hundred and twenty five.txt
我想對每個文件進行批處理,而無需在主批處理腳本(process.bat)中對每個文件名進行硬編碼。
我的process.bat只是使用命令行應用程序打開並處理文件(當前為硬編碼),然后將處理后的文件保存到其他目錄中,但保留原始文件名。
@echo off
setlocal enableextensions disabledelayedexpansionstart
start prooftool -c "file number one.txt" "/processed/file number one.txt"
我不知何故需要用myfile.txt中的變量(即文件名)動態替換“文件號one.txt”,然后將處理后的數據寫入名為與原始文件完全相同的新文件中,但位於名為“處理”。
要從mytext.txt中讀取文件名,我嘗試過:
for /F "tokens=*" %%A in (myfile.txt) do [process.bat] %%A
但是process.bat沒什么要處理的。
我查找了如何將文本文件中的行讀取為變量,並且我認為文件名中的空格可能會引起問題!
我也不明白變量的存儲位置(我想是在內存中嗎?),我如何調用要由我的process.bat腳本處理的變量(文件名當前為硬編碼),然后如何調用下一個變量等等,以便它循環並處理目錄中的所有文件。
感謝您的時間和耐心!
嘗試
for /F "tokens=*" %%A in (myfile.txt) do [process.bat] "%%A"
引用元metavariable
會使整個字符串(包括空格)成為單個標記。 既然您沒有向我們顯示process.bat
,令人遺憾的是,我們正在猜測。
在您的process.bat
文件中,您需要
start "some windowtitle" prooftool -c "%~1" "\processed\%~1"
start
使用第一個帶引號的字符串作為窗口標題; 您可以根據需要將其設置為空字符串,但不要忽略它。
"%~1"
表示quote (the-first-parameter-stripped-of-quotes)
。
winbatch中的路徑分隔符為\\
。 /
用於指示開關。 有時(但不總是)將/
轉換為\\
-最好使用正確的字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.