Windows批处理:"~"是什么作用?

123 浏览
0 Comments

Windows批处理:"~"是什么作用?

我只是想知道批处理文件中的\"~\"符号有什么作用,我知道它与变量有关。\n能给我一些它的用法示例吗?\n谢谢。

0
0 Comments

在Windows批处理中,“~”符号的作用取决于上下文,而您并没有提供上下文。

例如,如果在变量%%a中有一个文件名,则%%~za将返回文件大小,%%~ta将返回文件的日期/时间。其他时候,它可能是一个子字符串运算符,比如`%fred:~1,6%`表示对变量`fred`取子字符串,从第一个字符开始跳过,选择接下来的最多`6`个字符。

0
0 Comments

Windows批处理:什么是“~”的作用?

在Windows批处理中,“~”的作用取决于使用的命令。一般来说,它的含义是:获取循环变量、环境变量或传递给批处理文件的参数字符串的值,并进行修改。

一个非常简单的例子:

有一个批处理文件test.bat,内容如下:

Parameter 1 as specified: %1
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已经写过的那样,可以在命令提示符窗口中输入以下命令,并阅读窗口中的帮助信息。

1. `help call`或`call /?`

2. `help for`或`for /?`

3. `help set`或`set /?`

在许多命令中,字符串中包含空格或其他特殊字符时(参见输入`cmd /?`后的最后一个帮助页面输出),必须使用双引号括起来。但是其他命令要求删除双引号,例如使用`if`命令比较两个带双引号的字符串,或者不希望使用`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是当前正在执行的批处理文件,可以通过以下方式进行演示:

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

希望这些例子能够解答你关于“~”在Windows批处理中的作用的疑问。

0