1
我是新編寫批處理文件;它的語法讓我嘔吐,所以我儘量遠離。長話短說,我需要一種快速簡單的方法來檢查大量數據並將其全部導出到Windows中的.csv文件中。我寫了一個簡單的小批處理文件來爲我完成這項工作。批處理文件中的變量範圍
我有一些變量的問題。這段代碼的想法是構建一串由逗號分隔的數據,然後回顯輸出。另一個文件將捕獲輸出,但這並不重要。
這裏是顯示我有這個問題的一些僞代碼,我遇到了這個問題好幾次,都顯著重組我的代碼,以儘量避免它
setlocal EnableDelayedExpansion
::pseudo code for loop
LOOP THROUGH LIST OF FILE PATHS PUTTING THEM INTO %%B do (
set str=, ::reset str
other code
if exist %%B (
other code
::echos the file path and checks if it is a specific file i need to search
echo %%B 2> NUL | find /I /N %%B "%phrase_0_%" > NUL
if %ERRORLEVEL% == 0 (
::HERE IS THE PROBLEM SEE BELOW FOR MORE INFO
type %%B 2> NUL | find /I /N "%phrase_1_%" > temp.txt
set /p var=<temp.txt
set "str=!str!%var%,"
del temp.txt
type %%B 2> NUL | find /I /N "%phrase_2_%" > temp.txt
set /p var=<temp.txt
set "str=!str!%var%,"
del temp.txt
)
) else (::OTHER CODE)
echo !str!
)
endlocal
好吧,這裏就是我的想法問題是。我一直遇到嵌套的變量調用問題。我會用這個方便的循環技巧來將一個命令的輸出放入一個變量中,但它需要另一個層次的嵌套,這意味着更改變量的值時會遇到更多麻煩。你可以看到,我能惹%STR%內:
if exists %%B(
使用SETLOCAL EnableDelayedExpansion和STR!廢話。但是當我去另一個層面下來
if %ERRORLEVEL% == 0
做你們有什麼問題可能是一些建議或解決方案可能是什麼都不行?
我期望'%var%'擁有的是'type %% B 2> NUL |找到/ I/N「%phrase_2 _%」'命令。它應搜索文件中的特定短語並打印行和行號。 你是否建議解決方案將設置爲「str =!str !! var!,」'? – Newbie
當然。在實際輸入最外面的塊之前,'%var%'將被替換。 – Joey