问号获取URL编码在Windows批处理文件中

尼克拉斯

我无法使用几天前运行的批处理脚本,但是即使没有进行任何更改,现在也无法使用!我相信,在我不知情的情况下,系统发生了某些变化。

预期的链接是:

order.htm?order=12345

但是它变成了这样:(注意,问号变成了%3F)

order.htm%3Forder=12345

代码如下:

@echo off
echo.

set "drive=%~d0"
set "runningDir=%~dp0"

:start
ClS
Echo.
Set /P Job=Enter number:^>

@echo off

if exist c:\"Program Files (x86)"\Google\Chrome\Application\chrome.exe goto program_files_x86

:program_files_x86
start c:\"Program Files (x86)"\Google\Chrome\Application\chrome.exe --disable-print-preview --ignore-certificate-errors --disable-web-security --user-data-dir --allow-file-access-from-files %runningDir%\order.htm?order=%job%
goto end

:end
goto start

有什么建议么?

最好的问候尼古拉斯

莫菲

通常应在整个文件夹/文件字符串中使用双引号,而不仅仅是其中的一部分。

Command START将第一个双引号字符串解释为新命令过程的标题。因此,在启动GUI应用程序时,""应在START命令行上使用指定的空标题字符串,以避免用应用程序的路径将双引号文件名解释为标题字符串。

引用的批处理文件路径%~dp0始终以反斜杠结尾。因此,请勿在此字符串或环境变量(例如runningDir批处理文件的路径)之后指定额外的退格键顺便说一句:运行批处理文件时的当前目录可以不同于批处理文件的目录。因此,该名称runningDir不宜误导。环境变量的更好称呼是BatchPath

可以start在批处理文件中用作标签。但是不建议这样做,因为命令START使得很难分别搜索标签和搜索命令。最好使用像这样的标签Begin

在url中,目录分隔符为/,因此批处理文件路径中的每个反斜杠(Windows上为目录分隔符)都应用斜杠代替。

网址应以http://(超文本传输​​协议)之类的协议开头,并应完全用双引号引起来。

最后echo/还是echo(echo.打印空白行更好,请参见Echo [Special Character]之间的差异以获取详细信息。

重写的批处理代码:

@echo off
echo/

set "BatchPath=%~dp0"
set "BatchPath=%BatchPath:\=/%"

:Begin
clS
echo/
set /P "Job=Enter number: "

if exist "%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe" goto program_files_x86

:program_files_x86
start "" "%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe" --disable-print-preview --ignore-certificate-errors --disable-web-security --user-data-dir --allow-file-access-from-files "http://%BatchPath%order.htm?order=%Job%"
goto end

:end
goto Begin

为了了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • cls /?
  • echo /?
  • goto /?
  • if /?
  • set /?
  • start /?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章