2014-09-12 54 views
2

我有一個批處理文件,它將顯示文件夾中的所有文件,並允許用戶通過編號選擇文件並將其傳遞給可執行文件。一切正常,但是,我正試圖讓這是一個點擊後忘記類型的批處理文件。換句話說,我還希望用戶能夠選擇一個能夠將所有文件一次一個地傳遞到所述可執行文件的數字。我當前的代碼如下:使用批處理文件列出文件並允許用戶選擇將文件傳遞給可執行文件

@ECHO OFF 
SET index=1 

SETLOCAL ENABLEDELAYEDEXPANSION 
FOR %%f IN (*.txt) DO (
    SET file!index!=%%f 
    ECHO !index! - %%f 
    SET /A index=!index!+1 
) 

SETLOCAL DISABLEDELAYEDEXPANSION 

SET /P selection="select file by number:" 

SET file%selection% >nul 2>&1 

IF ERRORLEVEL 1 (
    ECHO invalid number selected 
    EXIT /B 1 
) 

CALL :RESOLVE %%file%selection%%% 

CSCRIPT //NoLogo //B C:\FCLoader\sendkeys.vbs 

Z:\executable.exe %file_name% 


GOTO :EOF 

:RESOLVE 
SET file_name=%1 
GOTO :EOF 

的CSCRIPT線有從一個VBS文件傳遞擊鍵輸入用戶名,密碼和數據庫名稱的可執行文件。這工作正常。如果我只想針對一個文件運行一次,該可執行文件也可以正常工作。下面是什麼批處理看起來像跑步之後的示例:

1 - file.txt 
2 - file2.txt 
3 - file3.txt 
select file by number: 

我想是因爲它看起來像這樣:

1 - file.txt 
2 - file2.txt 
3 - file3.txt 
4 - All 
select file by number: 

我想爲用戶能夠選擇4 - 全部,並讓它每次運行一個文件的可執行文件。當第一次運行完成時,它將再次調用可執行文件,依此類推......它還需要在運行可執行文件之前運行vbs腳本,以便如上所述傳遞憑據。

我已經在批處理文件中使用了我的知識,現在需要幫助。

回答

2

試試這個代碼:

@ECHO OFF 
SET index=1 
SETLOCAL ENABLEDELAYEDEXPANSION 
FOR %%f IN (*.*) DO (
    SET file!index!=%%f 
    ECHO !index! - %%f 
    SET /A index=!index!+1 
) 
echo/!Index! - All 
SETLOCAL DISABLEDELAYEDEXPANSION 
SET /P selection="select file by number: " 
if "%selection%" equ "%index%" goto allFiles 
SET file%selection% >nul 2>&1 
IF ERRORLEVEL 1 (
    ECHO invalid number selected 
    EXIT /B 1 
) 
CALL :RESOLVE %%file%selection%%% 
CSCRIPT //NoLogo //B C:\FCLoader\sendkeys.vbs 
Z:\executable.exe "%file_name%" 
GOTO :EOF 
:RESOLVE 
SET file_name=%1 
GOTO :EOF 
:allFiles 
FOR %%f IN (*.txt) DO ( 
    CSCRIPT //NoLogo //B C:\FCLoader\sendkeys.vbs 
    Z:\executable.exe "%%f" 
) 
goto :EOF 
+0

我會嘗試這個星期一,當我回去工作,它看起來不錯,但。謝謝! – razielxx 2014-09-12 21:23:36

+1

這就像一個冠軍,非常感謝你! – razielxx 2014-09-15 13:18:34

相關問題