各位先進不好意思,小弟在編寫BAT檔時腦袋有點轉不過去。
資料夾結構:
0000_XXXX1.txt
0000_XXXX2.txt
0001_XXXX1.txt
需求:
輸入字串查找資料夾裡是否有相同檔案,若一筆的情況下直接執行若多筆的情況下則可輸入選擇。
請輸入編號:0000
----list----
1.0000_XXXX1.txt
2.0000_XXXX2.txt
請輸入執行編號:2
執行2
問題:
輸入,查找,執行都可以但多筆的情況下,小弟的做法是直接用COUNT的方式宣告變數然後將檔案名稱丟進去,之後在輸入數字然後執行。
fcount為計數
f為變數
此時fcount為1
f!fcount!為f1
把檔案名稱丟進f1
fcount進1
f!fcount!為f2
把檔案名稱丟進f2
直接%f1%或%f2%可正常打開檔案
%f1% echo輸出內容為 0000_XXXX1.txt
但希望是%fb%,若f為固定文字,b最後使用者輸入數宇(例 input 1,變數b),然後打開指定檔案
試%f!fcount!%無法打開檔案<--這裡小弟腦袋轉不過去,請先進幫幫忙啊!!!
@echo off&setlocal enabledelayedexpansion
set basepath=D:\
set /a fcount=0
set /p a=input:
for /l %%a in (0,1,10) do (
set /a b+=1
if not "!a:~%%a,1!"=="" (
ECHO "!a:~%%a,1!"==""
set c=!b!
)
)
if %c% == 4 (
ECHO ■====リスト====■
For /F %%f in ('dir/b %a%*') do (
set /a fcount+=1
echo !fcount!.%%f
set f!fcount!=%%f
)
) else (
set /p=error
)
%f!fcount!% <--如何合併兩個變數為一個變數?
小成前輩的解答:
@echo off&setlocal enabledelayedexpansion
set basepath=D:\
set /a fcount=0
set /p a=input:
for /l %%a in (0,1,10) do (
set /a b+=1
if not "!a:~%%a,1!"=="" (
ECHO "!a:~%%a,1!"==""
set c=!b!
)
)
if %c% == 4 (
For /F %%n in ('dir/b %a%*') do (
set /a fcount+=1
echo !fcount!.%%n
set f!fcount!=%%n
)
) else (
set /p=error
)
set /p u=input:
!f%u%! <--喵的,原來是要跑!在跑%