2013-07-22 112 views
1

我想在批处理文件中做下面的事情。批处理脚本 - 下面批处理文件中的错误在哪里?

  1. Check if a folder exists
  2. If not, create the folder.
  3. If the folder has created then provide Read permission to Everyone
  4. Else show error that the folder has not created.

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

​​

但是在执行从CMD此test.bat的文件,我得到以下错误:

IF NOT EXIST "C:\Users\Test\AppData\Local\Temp\Data" (MKDIR "C:\Users\Test\AppData\Local\Temp\Data") 
(CI)R) was unexpected at this time. 
IF EXIST "C:\Users\Test\AppData\Local\Temp\Data" (
icacls "C:\Users\Test\AppData\Local\Temp\Data" /grant "Everyone":(OI)(CI)R) 

我可以看到该文件夹​​已创建,但未设置权限。你能告诉我为什么会出现这个错误吗?谢谢 !

回答

2

为什么是一批有歧义的语法和不能告诉一个)之间的区别,关闭块和)表现为一个普通的字符的文件名或随你。

HOW是与前面的插入符号逃脱“普通”字符^)所以"Everyone":(OI)(CI)R)变得"Everyone":(OI^)(CI^)R)

注意然而,该)以下的R闭合块,因此应当NOT有插入符号但是这会引入进一步的语法错误 - 否则必须与前面的在同一条物理线路上因此您需要

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

试试这个:

@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 
)