8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

无法对包含空格的目录运行 icacls

N. Wells 1月前

13 0

我正在尝试在我的计算机上运行一个简单的 icacls 到目录,但遇到了这个错误:PS C:\Users\gguer\Documents> icacls.exe '.\My Digital Editions\'.\My Digital Editions\': 文件...

我正在尝试在我的计算机上运行一个简单的 icacls 目录,但遇到了这个错误:


PS C:\Users\gguer\Documents> icacls.exe '.\My Digital Editions\'
.\My Digital Editions": The filename, directory name, or volume label syntax is incorrect.
Successfully processed 0 files; Failed processing 1 files

正如我所想的那样,我正在使用单引号来转义空格,所以我不知道这里的问题是什么。

帖子版权声明 1、本帖标题:无法对包含空格的目录运行 icacls
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由N. Wells在本站《powershell》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您自己的有效解决方法 添加解释 (不包括您的论点中的尾随 \ ):

    您看到的是 bug in Windows PowerShell 关于如何将参数传递给外部程序的一个错误 - 此问题已 fixed in PowerShell (Core) 7+ .

    在后台, PowerShell (of necessity) translates your single -quoted argument containing spaces to a double -quoted form, 因为只能假设外部 CLI 理解 "..." 引用。

    大多数 CLI 使用的命令行解析规则将该序列视为 \" 转义 字符 " ,即将该 " 字符视为 参数的 逐字

    因此, a verbatim \ at the end of a double-quoted string must itself be escaped as \\ 才能被识别 - 这是 Windows PowerShell 忽略的操作

    也就是说,Windows PowerShell 会将您的调用转换如下:

    # Resulting command line as used behind the scenes for actual invocation.
    # WinPS: BROKEN, because the \ at the end isn't escaped.
    icacls.exe ".\My Digital Editions\"
    

    icacls.exe 解析此命令行时,它会看到逐字逐句 .\My Digital Editions" 末尾的 " 逐字逐句

    相比之下,PowerShell(核心)确实执行了必要的转义:

    # Resulting command line as used behind the scenes for actual invocation.
    # PowerShell (Core): OK
    icacls.exe ".\My Digital Editions\\"
    

    解决方法

    • p9

      • 【【p10】】

        $path = '.\My Digital Editions\'icacls.exe $path.TrimEnd('\')  # !! Doesn't work for ROOT paths, e.g. "C:\"
    • p11

      • 【【p12】】

        icacls.exe "$path\"
    • p13

      icacls.exe $(if ($path.EndsWith('\') -and $PSVersionTable.PSEdition -ne 'Core') { "$path\" } else { $path })

    另外:

    影响 \' 相关错误影响最高 7.2.x 的 PowerShell(核心) - 请参阅 此答案 .

返回
作者最近主题: