使文件递归写入

时间:2012-12-27 05:45:44

标签: windows command-line batch-file cmd

我正在尝试使用此

使每个文件在某些​​文件夹下可写
  

/ d / r。在(nbproject)中的%% d做@if存在" %% d" dir" %% d" / S | attrib -R / S / D" %% d"

在文件夹内

  

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

完美无缺。但是当从批处理脚本运行时,它无法做正确的事情。请指教。

1 个答案:

答案 0 :(得分: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. 您正在将dir的输出汇总到attrib并使用d变量。只需要一个。如果&变量与d一起使用,请使用attrib符号,否则请删除d变量。
  2. /b选项与dir命令一起使用,尤其是在管道输出时。
  3. for命令中不需要.。未指定时假定当前目录。
  4. 引用循环变量时,请使用代字号~删除现有的引号,以便不会出现双引号。
  5. /S中使用attrib时,dir不需要for /d /r %%d in (nbproject) do @if exist "%%~d" dir "%%~d" /B /S | attrib -R /D 选项。
  6. 示例:

    {{1}}