Syn*_*ech 3 windows command-line environment-variables filenames escape-characters
有没有人可以%
从命令行访问名称中包含 a 的文件和目录(有效)?具体来说,如果有两个%
's 并且它们之间的文本恰好对应于一个环境变量。
例如,如果有一个名为 的文件C:\blah\%temp%.txt
或一个名为的文件夹C:\Program Files\%temp%\
,由于变量被扩展,以下任何操作都将不起作用:
> dir "c:\blah\%temp%.txt"
> dir "c:\blah\^%temp^%.txt"
> dir "c:\blah\%%temp%%.txt"
> dir "c:\blah\\%temp\%.txt"
> dir "c:\program files\%temp%"
> dir "c:\program files\^%temp^%"
> dir "c:\program files\%%temp%%"
> dir "c:\program files\\%temp\%"
Run Code Online (Sandbox Code Playgroud)
使用通配符会起作用,但不会唯一地选择文件/文件夹,并且可能包括其他文件/文件夹:
> dir "c:\blah\?temp?.txt" (also shows ztempz.temp, 1tempa.txt, etc.)
> dir "c:\program files\?temp?" (likewise)
Run Code Online (Sandbox Code Playgroud)
(这令人沮丧,因为时不时——通常是当 Explorer 因任何原因重新启动时——环境变量停止扩展,并且某些使用它们的地方最终会创建包含环境变量的文件或目录。例如,因为我配置了Chromium 将其缓存存储在 的子目录中%temp%
,如果变量扩展,那很好,但是如果它没有扩展,Chromium 会%temp%
在其自己的目录下创建一个名为的目录,并将缓存(可能会变大)存储在那里。我想在我的临时/垃圾文件清理脚本中添加一行以自动删除该文件夹(如果存在),但我无法弄清楚如何从命令行访问它而不使用通配符。)
Bob*_*Bob 10
当我测试这个时,我发生了一些奇怪的事情。
dir "C:\Program Files\^%temp^%"
Run Code Online (Sandbox Code Playgroud)
出于某种原因,引号似乎干扰了转义。如果我也转义引号,它会起作用。
dir ^"C:\Program Files\^%temp^%^"
Run Code Online (Sandbox Code Playgroud)
它看起来很丑,但它有效。
如果路径中没有空格,则根本不需要引号。
归档时间: |
|
查看次数: |
7094 次 |
最近记录: |