Windows 使文件可递归写入
我试图使每个文件写在某些文件夹下使用这个 对于/d/r.%(nbproject)中的d do@if exist“%%d”dir“%%d”/S | attrib-R/S/d“%%d” 当在文件夹中时 目录“%%d”/S|attrib-RWindows 使文件可递归写入,windows,command-line,batch-file,cmd,Windows,Command Line,Batch File,Cmd,我试图使每个文件写在某些文件夹下使用这个 对于/d/r.%(nbproject)中的d do@if exist“%%d”dir“%%d”/S | attrib-R/S/d“%%d” 当在文件夹中时 目录“%%d”/S|attrib-R 很好用。但是,当从批处理脚本运行时,它无法正确执行操作。请注意。使用如下嵌套循环:只需将文件夹名称更改为您选择的文件夹即可 @echo off for /D /R %%D in (nbproject Folder2 Folder3) do if exist "%%
很好用。但是,当从批处理脚本运行时,它无法正确执行操作。请注意。使用如下嵌套循环:只需将文件夹名称更改为您选择的文件夹即可
@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
我们也来分析一下第一行代码可能失败的原因
dir
的输出输送到attrib
中,并使用d
变量。只需要一个。如果将d
变量与attrib
一起使用,请使用和符号,否则请删除d
变量
/b
选项与dir
命令一起使用,尤其是在管道输出时
。如果未指定,则假定当前目录~
删除现有的周围引号,以避免出现双引号dir
中使用attrib
时,不需要/S
选项for /d /r %%d in (nbproject) do @if exist "%%~d" dir "%%~d" /B /S | attrib -R /D
感谢您的解释,但这使所有文件都可写,在nbproject的同一层次结构级别的所有文件夹中。尝试了一些变体,但无法完成。@BasitAnwer我修复了代码,只搜索有问题的目录。然而,我修改的代码对我来说很好。您只需将每个文件夹名称添加到第一个for parenthases循环中的空格分隔列表中。很抱歉,您修复的代码无效。。。在尝试了一些之后,我确实设法让它工作===for/d/r.%d在(nbproject)do@if exist“%%~d”dir“%%d”/S | attrib-R“%%~d”*/S/d中您更新的代码工作得非常好,我认为我的for循环非常粗糙,使用了您的:)@domino_katrino一行程序仍然使用批处理变量语法。如果要在命令行上使用一行程序,必须将
%%
更改为%%
。例如:for/d/r%d in(nbproject)do@if exist“%~d”dir“%~d”/B/S|attrib-r/d