[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理脚本%temp%需要加双引号吗?

如题:
本人小白一枚,弱弱地请教一下,%temp%需要加双引号吗?
举例:
If "%PROCESSOR_ARCHITECTURE:~-1%"=="4" if not "%windir:~,2%"=="X:" %Windir%\System32\rundll32.exe %Windir%\System32\setupapi.dll,InstallHinfSection DefaultInstall 128 "%temp%\re.inf"

If "%PROCESSOR_ARCHITECTURE:~-1%"=="4" if not "%windir:~,2%"=="X:" %Windir%\System32\rundll32.exe %Windir%\System32\setupapi.dll,InstallHinfSection DefaultInstall 128 %temp%\re.inf

这两句,貌似没什么区别,我就想知道%temp%\re.inf,规范的写法需不需要加双引号"%temp%\re.inf"

谢谢各位坛友,谢谢!!!

我想不加是可以的。双引号在不同的地方有不同的作用,对于路径来说,加上双引号主要是为了应付路径中存在的空格或其它特殊字符(比如&等),这里路径中并不存在空格或其他特殊字符问题,加不加双引号对结果没什么影响。

TOP

回复 1# zhoubin


    加双引号是个好习惯,以免路径中可能存在的空格导致代码出错。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 zhoubin 于 2021-5-14 11:51 编辑

winXP下试了一下,%temp%\re.inf显示为C:\DOCUME~1\FeiHu\LOCALS~1\Temp\re.inf,这个短名路径,是不是可以理解为不含空格路径
C:\Program Files\新建文件夹>If "6" == "4" if not "C:" == "X:" C:\WINDOWS\System32\rundll32.exe C:\WINDOWS\System32\setupapi.dll,InstallHinfSection DefaultInstall 128 C:\DOCUME~1\FeiHu\LOCALS~1\Temp\re.inf

winXP下的%temp%全路径为C:\Documents and Settings\FeiHu\Local Settings\Temp,是含空格的. . .
谢谢解答!!

TOP

这个可以自己测试下吗

TOP

测试了,%temp%不加双引号是可以的
我写了好多的批处理,有的%temp%加了双引号,有的%temp%忘记加双引号,因为写的批处理很多,如果%temp%需要加双引号,有的批处理还在自解压.exe文件里执行,就有好多批处理需要修改,有点头大. . .
所以才来请教您!!!

TOP

谢谢指教,看来%temp%加不加双引号都是可以的. . .

TOP

回复 2# qixiaobin0715


    引号不能应对符号&^%@|的,只能应对空格

TOP

本帖最后由 zhoubin 于 2021-5-29 07:44 编辑

感谢指教,谢谢,顺便说一下,在winXP下又试了一下,这次用的是绝对路径
  1. If "%PROCESSOR_ARCHITECTURE:~-1%"=="6" if not "%windir:~,2%"=="X:" %Windir%\System32\rundll32.exe %Windir%\System32\setupapi.dll,InstallHinfSection DefaultInstall 128 C:\Documents and Settings\FeiHu\Local Settings\Temp\re.inf
复制代码
不加双引号,可以安装,看了有些大佬的写法,也是没有加双引号
  1. If "%PROCESSOR_ARCHITECTURE:~-1%"=="6" if not "%windir:~,2%"=="X:" %Windir%\System32\rundll32.exe %Windir%\System32\setupapi.dll,InstallHinfSection DefaultInstall 128 %temp%\re.inf
复制代码
我想rundll32安装.inf,可能比较特殊吧,所以我向大佬学习,rundll32安装%temp%\re.inf我不加双引号;其他情况,我用绝对路径就不行了,比如
  1. PUSHD %~dp0
  2. path %Windir%;%Windir%\System32;%Windir%\SysWOW64;"%CD%"
  3. regedit C:\Documents and Settings\FeiHu\Local Settings\Temp\测试.reg
复制代码
虽然,这样
  1. PUSHD %~dp0
  2. path %Windir%;%Windir%\System32;%Windir%\SysWOW64;"%CD%"
  3. regedit %Temp%\测试.reg
复制代码
也能成功,但还是建议加上双引号
  1. PUSHD %~dp0
  2. path %Windir%;%Windir%\System32;%Windir%\SysWOW64;"%CD%"
  3. regedit "%Temp%\测试.reg"
复制代码
其他情况,除了rundll32安装.inf外,建议都加上双引号,比如
  1. del "%Temp%\测试.reg"
复制代码
等情况,这里就不一一举例了

附上C:\Documents and Settings\FeiHu\Local Settings\Temp\re.inf文件代码,请朋友们验证测试
  1. [Version]
  2. Signature="$CHICAGO$"
  3. [Defaultinstall]
复制代码
C:\Documents and Settings\FeiHu\Local Settings\Temp\测试.reg文件,随便找一个空的reg(如下)测试即可
  1. Windows Registry Editor Version 5.00
复制代码

TOP

回复 9# qixiaobin0715


    “?”可以出现在路径中
  1. rd //?/%1
复制代码

TOP

返回列表