Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用批处理文件列出文件,并允许用户选择要传递给可执行文件的文件_Windows_Batch File_Batch Processing - Fatal编程技术网

Windows 使用批处理文件列出文件,并允许用户选择要传递给可执行文件的文件

Windows 使用批处理文件列出文件,并允许用户选择要传递给可执行文件的文件,windows,batch-file,batch-processing,Windows,Batch File,Batch Processing,我有一个批处理文件,它将显示文件夹中的所有文件,并允许用户按编号选择文件并将其传递给可执行文件。一切都正常,但是,我正试图使它成为一个点击并忘记类型的批处理文件。换句话说,我还希望用户能够选择一个数字,将所有文件一次一个传递给所述可执行文件。我目前的代码如下: @ECHO OFF SET index=1 SETLOCAL ENABLEDELAYEDEXPANSION FOR %%f IN (*.txt) DO ( SET file!index!=%%f ECHO !index! -

我有一个批处理文件,它将显示文件夹中的所有文件,并允许用户按编号选择文件并将其传递给可执行文件。一切都正常,但是,我正试图使它成为一个点击并忘记类型的批处理文件。换句话说,我还希望用户能够选择一个数字,将所有文件一次一个传递给所述可执行文件。我目前的代码如下:

@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-All,并让它为每个文件运行可执行文件,一次一个。当第一次运行完成时,它将再次调用可执行文件,依此类推……它还需要在运行可执行文件之前运行vbs脚本,以便如上所述传递凭据

我已在批处理文件中使用了我的知识范围,现在需要帮助。

请尝试以下代码:

@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

我会在周一回去工作的时候试试这个,不过看起来不错。谢谢