【发布时间】:2021-06-04 20:52:49
【问题描述】:
我正在尝试为所有使用批处理文件的用户创建一个通用路径目录。该代码会生成一个弹出窗口,并要求用户输入文件夹。该目录在终端上回显。我试图将此输出目录作为另一个函数“文件夹”中的参数传递,以便应用程序开始运行。但我无法通过论证。
@echo off
Title Browse4Folder
Color 0A
Call :Browse4Folder "Choose source folder to scan" "c:\scripts"
echo You have chosen this location "%Location%"
pause & exit
::***************************************************************************
:Browse4Folder
set Location=
set vbs="%temp%\_.vbs"
set cmd="%temp%\_.cmd"
for %%f in (%vbs% %cmd%) do if exist %%f del %%f
for %%g in ("vbs cmd") do if defined %%g set %%g=
(
echo set shell=WScript.CreateObject("Shell.Application"^)
echo set f=shell.BrowseForFolder(0,"%~1",0,"%~2"^)
echo if typename(f^)="Nothing" Then
echo wscript.echo "set Location=Dialog Cancelled"
echo WScript.Quit(1^)
echo end if
echo set fs=f.Items(^):set fi=fs.Item(^)
echo p=fi.Path:wscript.echo "set Location=" ^& p
)>%vbs%
cscript //nologo %vbs% > %cmd%
for /f "delims=" %%a in (%cmd%) do %%a
for %%f in (%vbs% %cmd%) do if exist %%f del /f /q %%f
for %%g in ("vbs cmd") do if defined %%g set %%g=
PAUSE
Call :Folder Location
:Folder
Set T32_PATH=%Location%
ECHO T32_PATH=%Location%
cd ..\Appl
START %Location%\t32mtc.exe -c ..\cm3550a_vecm\vlab_mcd.t32 -s ..\cm3550a_vecm\vlab_mcd_config.cmm
ECHO T32_PATH=%Location%
PAUSE
我必须将参数传递给行 START %Location%\t32mtc.exe -c ..\cm3550a_vecm\vlab_mcd.t32 -s ..\cm3550a_vecm\vlab_mcd_config.cmm 我该怎么做它。
【问题讨论】:
-
如果您说出您的论点是什么会有所帮助,但假设论点的值在变量
argument中,那么START "Window Title : "%Location%\t32mtc.exe" -c ..\cm3550a_vecm\vlab_mcd.t32 -s ..\cm3550a_vecm\vlab_mcd_config.cmm %argument%可能是一个开始。第一个引用的参数将是窗口标题。文本Window Title可以省略,但引号不能。如果完整文件名包含分隔符,则需要引用可执行文件名。我不知道..\cm ... onfig.cmm做了什么。 -
只需像这样从 VBS 启动
t32mtc.exe:stackoverflow.com/questions/1340355/… -
ARR,我已经回滚了您的最后一次编辑,您通过删除该信息所做的一切,就是让您的问题难以回答,并且我现有的答案提交与当时的问题不太相关回答。如果有什么特别导致您对我已经提供的一个或多个示例代码产生问题,并且您已经声明有效,请解释为对您的问题的编辑,而不是仅仅删除它的重要部分, (从而使我的答案不那么相关).
标签: batch-file directory arguments