Batch Script-其中是下面Batch文件中的错误



我正试图在批处理文件中执行以下操作。

  1. 检查文件夹是否存在
  2. 如果没有,请创建文件夹
  3. 如果文件夹已创建,则向Everyone提供读取权限
  4. 否则显示文件夹未创建的错误

下面是批处理文件(test.bat):

set FolderPath="%TEMP%Data"
IF NOT EXIST %FolderPath% (MKDIR %FolderPath%)
IF EXIST %FolderPath% (icacls %FolderPath% /grant "Everyone":(OI)(CI)R)
ELSE (
ECHO ERROR: The folder %FolderPath% can not be found
GOTO Finish
)
:Finish

但是在从cmd执行这个test.bat文件时,我得到了以下错误:

IF NOT EXIST "C:UsersTestAppDataLocalTempData" (MKDIR "C:UsersTestAppDataLocalTempData" )
(CI)R) was unexpected at this time.
IF EXIST "C:UsersTestAppDataLocalTempData" (
icacls "C:UsersTestAppDataLocalTempData" /grant "Everyone":(OI)(CI)R)

我可以看到文件夹已经创建,但没有权限集。你能告诉我为什么会出现这个错误吗?谢谢

WHY是批处理具有不明确的语法,并且无法区分关闭块的)和在文件名或其他文件中作为普通字符出现的)之间的区别。

HOW是用前面的插入符号^)转义"普通"字符,使"Everyone":(OI)(CI)R)变成"Everyone":(OI^)(CI^)R)

但是请注意,R后面的)关闭块,因此NOT应该有一个插入符号但是这将引入进一步的语法错误-ELSE必须与前面的)在同一物理线上,因此您需要

IF EXIST %FolderPath% (icacls %FolderPath% /grant "Everyone":(OI^)(CI^)R
) ELSE (

试试这个:

@ECHO OFF &SETLOCAL
SET "folderpath=test"
IF EXIST "%FolderPath%" icacls %FolderPath% /grant "Everyone":(OI)(CI)R
IF NOT EXIST "%FolderPath%" (
    ECHO ERROR: The folder %FolderPath% can not be found
    GOTO Finish
)

相关内容

  • 没有找到相关文章

最新更新