0

下面的代码将运行一个文件夹,该文件夹包含多个文件(以“*_perms.txt”结尾),这些文件根据该用户名定义了目录的权限。理想情况下,代码将在某些时候删除目录和扩展名,只使用 .txt 文件的名称作为用户。

现在,代码通过遍历文件来工作;询问权限用户名是什么;其次是权限级别;然后遍历文件中列出的目录设置权限。

除非它没有。

当我运行文件并输入用户和级别时,它似乎没有确认输入的内容,而是使用上次运行的最后输入的值(对于所有)。

我是一个完整的批处理n00b,所以请原谅任何突出的编码错误或做法。也非常感谢有关代码的任何其他建议。

:: Get the files which define the permissions
FOR /R %perms% %%i IN ("*_perms.txt") DO (
echo %%i

:: TO-DO - remove path and file extension
echo ++++ %%i Folder ++++ >> %logFile% & echo.
SET /P permUser=:Enter the user. 
SET /P permType=:Enter the user access right. 

:: Set the permissions for the folders specified
FOR /F %%j IN (%%i) DO (
    ::echo %%j  
    ::echo %permUser%
    echo %VSS_home%\%%j

    :: N.B - uses the last entered parameter on the command-line. 
    ::       also does not get recorded onto log file. 
    net share permDir=%VSS_home%\%%j /grant:%permUser%,%permType% /users:%MaxUsers% /remark:%%j >> %logFile%
    echo User: %permUser%, Rights: %permType% >> %logFile%
)
)
4

1 回答 1

1

首先,请参阅有关在括号内使用标签注释的讨论。::基本上,不要使用它们,使用rem

其次,请参阅延迟扩展了解如何在括号内设置变量。基本上,setlocal EnableDelayedExpansion如果要访问在括号内设置的变量,则需要。

这里有一些很好的帖子,解释了如何处理批处理文件。

https://stackoverflow.com/a/7970912/891976

https://stackoverflow.com/a/4095133/891976

大批量参考

SS64 , DosTips , ComputerHope , Rob van der Woude , TechNet

于 2013-08-12T14:30:42.677 回答