找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26800|回复: 9

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

[复制链接]
发表于 2021-5-14 08:28:59 | 显示全部楼层 |阅读模式
如题:
本人小白一枚,弱弱地请教一下,%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"

谢谢各位坛友,谢谢!!!
发表于 2021-5-14 09:36:10 | 显示全部楼层
我想不加是可以的。双引号在不同的地方有不同的作用,对于路径来说,加上双引号主要是为了应付路径中存在的空格或其它特殊字符(比如&等),这里路径中并不存在空格或其他特殊字符问题,加不加双引号对结果没什么影响。
发表于 2021-5-14 10:07:24 | 显示全部楼层
回复 1# zhoubin


    加双引号是个好习惯,以免路径中可能存在的空格导致代码出错。
 楼主| 发表于 2021-5-14 11:46:37 | 显示全部楼层
本帖最后由 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,是含空格的. . .
谢谢解答!!
发表于 2021-5-14 11:53:07 | 显示全部楼层
这个可以自己测试下吗
 楼主| 发表于 2021-5-14 12:04:19 | 显示全部楼层
测试了,%temp%不加双引号是可以的
我写了好多的批处理,有的%temp%加了双引号,有的%temp%忘记加双引号,因为写的批处理很多,如果%temp%需要加双引号,有的批处理还在自解压.exe文件里执行,就有好多批处理需要修改,有点头大. . .
所以才来请教您!!!
 楼主| 发表于 2021-5-14 12:06:18 | 显示全部楼层
谢谢指教,看来%temp%加不加双引号都是可以的. . .
发表于 2021-5-14 17:41:38 | 显示全部楼层
回复 2# qixiaobin0715


    引号不能应对符号&^%@|的,只能应对空格
 楼主| 发表于 2021-5-16 09:07:56 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2021-5-16 19:29:17 | 显示全部楼层
回复 9# qixiaobin0715


    “?”可以出现在路径中
  1. rd //?/%1
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 18:11 , Processed in 0.015169 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表