簡體   English   中英

批處理讀取文件名作為變量,然后在另一個批處理過程中使用該變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM