Windows批处理:“〜”有什么作用?

时间:2014-10-23 23:48:32

标签: batch-file cmd

我只是想知道批处理文件中的“〜”符号是什么,我知道它与变量有关。

我能举例说明它的作用吗?

感谢。

2 个答案:

答案 0 :(得分:1)

取决于您未提供的背景信息。

例如,如果%% a中有文件名,则%% ~za将返回文件大小,%%〜ta文件日期/时间。其他时候它可能是一个子字符串运算符,例如%fred:~1,6%fred的子字符串,跳过第一个1并选择下一个6最大值。

答案 1 :(得分:1)

这取决于~用作dbenhamMagoo已编写的命令。通常,它意味着:通过修改获取变量(循环或环境变量)的值。

一个非常简单的例子:

有一个包含内容的批处理文件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已写入时,请在命令提示符窗口中输入命令并阅读窗口中的帮助输出。

  1. help callcall /?
  2. help forfor /?
  3. help setset /?
  4. 在许多带有空格或其他特殊字符的命令字符串上 - 请在输入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导致只获取没有双引号的文件名,将字符串中的路径和文件扩展名作为第一个参数传递给批处理文件。