【问题标题】:Is there a way to pass Parameters to child script from a text file?有没有办法将参数从文本文件传递给子脚本?
【发布时间】:2017-02-14 05:54:41
【问题描述】:

父文件:test.bat

@echo off
for /f %%a in (links.txt) do (
echo opening %%a
call  %%a
)
PAUSE

文本文件:links.txt

Chrome.bat A

子文件:Chrome.bat

@echo off
echo %1
start C:\"Program Files (x86)"\Google\Chrome\Application\chrome.exe

问题是 Chrome.bat 没有从 links.txt 中获取参数(即“A”)。 Chrome.bat 中的 Echo 语句显示“Echo is off”而不是显示“A”。谁能提供解决方案?

【问题讨论】:

    标签: windows batch-file command-line cmd


    【解决方案1】:
    for /f "delims=" %%a...
    

    如果不指定分隔符,则仅将行中的第一个标记分配给%%a。默认标记包括 Space

    有关详细信息,请参阅提示中的for /?|more

    【讨论】:

    • 嗨,它适用于上述代码集。但它不适用于此@echo off setlocal EnableExtensions DisableDelayedExpansion set /A "INDEX=0" for /f "delims=" %%J in (links.txt) do ( echo %%J call set "$BATCH[%%INDEX%%]=%%J" set /A "INDEX+=1" )(应用程序未启动)
    • “不工作”没有提供有关问题所在的信息。不可能看到你的换行符在哪里。在您的代码中,您只是 echo 从文件中读取的行。如果你想执行它,你需要 call %%J 在由括号分隔的块内的单行上。
    • LB 是换行符 @echo off LB setlocal EnableExtensions DisableDelayedExpansion LB set /A "INDEX=0" LB for /f "delims=" %%J in (links.txt) do ( LB call set "$BATCH[%%INDEX%%]=%%J" LB set /A "INDEX+=1" LB ) 应用程序未启动。 我想将从文件中读取的行存储在一个数组中,这样我就可以生成一个日志文件来编写退出代码。
    • do 子句中的唯一说明是设置 $BATCH[x] 并增加索引。要执行您的应用程序,您还需要包含 call %%J
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多