使文件递归写入

Bas*_*wer 4 windows command-line cmd batch-file

我试图使用这个使某些文件夹下的每个文件都可写

for/d/r.(%bd)中的%% d执行@if存在"%% d"dir"%% d"/ S | attrib -R/S/D"%% d"

当在文件夹内时

dir"%% d"/ S | attrib -R

工作得非常好.但是当从批处理脚本运行时,它无法做正确的事情.请指教.

Dav*_*ann 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
)
Run Code Online (Sandbox Code Playgroud)

一个班轮:

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
Run Code Online (Sandbox Code Playgroud)

让我们分解您的第一行代码,原因可能是它失败了.

  1. 您正在dir输入attrib和使用d变量.只需要一个.使用&,如果使用符号d可变attrib否则删除d变量.
  2. /bdir命令中使用该选项,尤其是在管道输出时.
  3. .for命令中不需要.未指定时,假定当前目录.
  4. 引用循环变量时,使用代字号~删除现有的周围引号,以便不会出现双引号.
  5. 使用它时/S不需要该选项.attribdir

例:

for /d /r %%d in (nbproject) do @if exist "%%~d" dir "%%~d" /B /S | attrib -R /D
Run Code Online (Sandbox Code Playgroud)