【发布时间】:2014-12-19 18:52:49
【问题描述】:
我只是想知道“~”符号在批处理文件中的作用,我知道它与变量相关联。
我可以举一些例子来说明它的作用吗?
谢谢。
【问题讨论】:
-
阅读文档。查看 FOR 和 CALL 帮助的底部。在命令行中,键入
HELP CALL和HELP FOR,或CALL /?ANDFOR /?。
标签: batch-file cmd
我只是想知道“~”符号在批处理文件中的作用,我知道它与变量相关联。
我可以举一些例子来说明它的作用吗?
谢谢。
【问题讨论】:
HELP CALL 和HELP FOR,或CALL /? AND FOR /?。
标签: batch-file cmd
这取决于~ 使用的命令,因为dbenham 和Magoo 已经写了。一般来说,它的意思是:获取一个变量(循环或环境变量)的值或一个参数字符串,并通过修改传递给批处理文件。
一个非常简单的例子:
有一个批处理文件test.bat,内容为:
@echo Parameter 1 as specified: %1
@echo Parameter 1 (no quotes): %~1
开头是
test.bat "C:\Program Files\Internet Explorer\iexplore.exe"
双引号是必须的,因为路径中有空格。
批处理文件输出:
Parameter 1 as specified: "C:\Program Files\Internet Explorer\iexplore.exe"
Parameter 1 (no quotes): C:\Program Files\Internet Explorer\iexplore.exe
所以在这个例子中,~ 导致在没有双引号的情况下获取第一个参数的值。
正如dbenham 已经写的那样,在命令提示符窗口中输入命令并阅读窗口中的帮助输出。
help call 或 call /?
help for 或 for /?
help set 或 set /?
在许多带有空格或其他特殊字符的命令字符串中——在输入cmd /? 后查看最后的帮助页面输出——必须用双引号引起来。但其他人要求删除双引号,就像使用命令 if 比较两个双引号字符串时一样,或者像使用 echo 那样不需要双引号。
再举一个例子:
@echo off
if /I "%~n1" == "iexplore" echo Browser is Internet Explorer.
if /I "%~n1" == "opera" echo Browser is Opera.
if /I "%~n1" == "firefox" echo Browser is Firefox.
在此示例中,~n 仅从作为第一个参数传递给批处理文件的字符串中获取不带双引号、路径和文件扩展名的文件名。
参数 0 是当前执行的批处理文件,可以通过以下方式演示:
@echo off
echo Batch file was called with: %0
echo Batch file is stored on drive: %~d0
echo Batch file is stored in folder: %~dp0
echo Batch file name with extension: %~nx0
【讨论】:
取决于您未提供的上下文。
例如,如果 %%a 中有文件名,则 %%~za 将返回文件大小,%%~ta 将返回文件日期/时间。其他时候可能是子串运算符,比如%fred:~1,6%(fred的子串,跳过第一个1,选择下一个6最大值。
【讨论】: