4

我正在尝试使用此方法使每个文件在某些​​文件夹下都可写

对于 /d /r 。%%d in (nbproject) do @if exists "%%d" dir "%%d" /S | 属性 -R /S /D "%%d"

在文件夹中时

目录 "%%d" /S | 属性-R

工作得很好。但是从批处理脚本运行时,它无法正确执行操作。请指教。

4

1 回答 1

6

使用这样的嵌套循环:只需将文件夹名称更改为您选择的文件夹。

@echo off
for /D /R %%D in (nbproject Folder2 Folder3) do if exist "%%~fD" (
    pushd "%%~fD"
    for /R %%F in (*) do if exist "%%~fF" attrib -R "%%~fF" /D
    popd
)

一个班轮:

for /D /R %%D in (nbproject Folder2 Folder3) do @if exist "%%~fD" @cd /D "%%~fD" && for /R %%F in (*) do @if exist "%%~fF" attrib -R "%%~fF" /D

让我们也分解你的第一行代码,因为它可能会失败。

  1. 您正在将输出通过管道传输dirattrib并使用该d变量。只需要一个。如果使用变量,则使用&符号,否则删除变量。dattribd
  2. /b选项与dir命令一起使用,尤其是在管道输出时。
  3. .for 命令中不需要。未指定时假定为当前目录。
  4. 引用循环变量时,使用波浪号~删除现有的周围引号,这样就不会出现双引号。
  5. 在 中使用时/S不需要该选项。attribdir

例子:

for /d /r %%d in (nbproject) do @if exist "%%~d" dir "%%~d" /B /S | attrib -R /D
于 2012-12-27T14:47:37.077 回答