Windows 将文件夹中包含一行的所有文件设为只读

Raymo111

我在目录中有一些带有注释的文件:

// _READONLY_

我想使用批处理脚本将所有这些文件设置为只读。

我发现这个命令可以设置只读状态:

attrib +r

我知道有一个findstr命令,但我正在努力将两者串联起来(双关语:)来做我想做的事。

IT暴徒忍者

这是一个命令行和一个批处理脚本示例,它使用FOR /F循环为.txt具有匹配"// _READONLY_"字符串的单个目录中的所有文件设置只读属性

这里要提到的几件事是......

  • FOR /F选项块使用:作为分隔符来分割每个迭代该值

  • FOR /F选项框用途12令牌到每个前得到的值:每次迭代-这样的驱动器号值与没有结肠行进,并与没有结肠前减去驱动的完整文件路径信,以用作%a%b在这些实施例

  • FOR /F命令的参数块放冒号:所述第一和第二令牌值之间再次创建的文件路径,因为它被分裂对结肠和它的其它方式省略

    • 这是attrib +r命令如何处理每个匹配的文件,它将连接%a值、冒号,并且%b之间没有空格(例如%a:%b
  • 将 aFOR /R混入并将每个递归子目录值传递给一个处理FOR /F命令,以在所有这些子目录中搜索.txt包含匹配字符串的文件

    一个递归错误FINDSTR和一个FOR /R减轻......

    FINDSTR应该能够使用该/S选项递归目录树但是如果您的文件系统启用了短名称,则有一个令人讨厌的错误可能会导致某些文件被跳过。请参阅Windows FINDSTR 命令有哪些未记录的功能和限制?了解更多信息。在该答案中查找部分标题“ BUG - Short 8.3 filenames can break the /D and /S option s” 德本纳姆

命令行

注意:第一行命令FOR /F是获取所有父级文件夹文件。第二行命令FOR /R是获取子文件夹及其文件以及父文件夹下的所有内容。

FOR /F "DELIMS=: TOKENS=1,2" %a IN ('findstr C:"// _READONLY_" "C:\Folder\Path\*.txt"') DO attrib +r "%a:%b"
FOR /R "C:\Folder\Path\" %D IN (.) DO (FOR /F "DELIMS=: TOKENS=1,2" %a IN ('findstr C:"// _READONLY_" "%~fdD\*.txt"') DO (attrib +r "%~a:%~b"))

批处理脚本

注:双了百分号%%批处理脚本FOR循环变量占位符%%a%%b-SO一个命令行运行的批处理脚本通常是用简单FOR的循环。

FOR /F "DELIMS=: TOKENS=1,2" %%a IN ('findstr C:"// _READONLY_" "C:\Folder\Path\*.txt"') DO attrib +r "%%a:%%b"
FOR /R "C:\Folder\Path\" %%D IN (.) DO (
    FOR /F "DELIMS=: TOKENS=1,2" %%a IN ('findstr C:"// _READONLY_" "%%~fdD\*.txt"') DO (
        attrib +r "%%~a:%%~b"))

配套资源

  • 为/F

  • 为/R

  • FOR /?

    FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
    
    
        delims=xxx      - specifies a delimiter set.  This replaces the
                          default delimiter set of space and tab.
        tokens=x,y,m-n  - specifies which tokens from each line are to
                          be passed to the for body for each iteration.
                          This will cause additional variable names to
                          be allocated.  The m-n form is a range,
                          specifying the mth through the nth tokens.  If
                          the last character in the tokens= string is an
                          asterisk, then an additional variable is
                          allocated and receives the remaining text on
                          the line after the last token parsed.
    
    In addition, substitution of FOR variable references has been
    enhanced. You can now use the following optional syntax:
    
    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    
  • Findstr /?

    /C:string  Uses specified string as a literal search string
    

.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

文件夹中的Windows XP只读设置有问题

Windows-如何将子文件夹中的所有文件移动到父文件夹?

Windows CMD:将后缀添加到文件夹中的所有文件

Windows 中文件夹及其子文件夹中的所有文件的列表

Windows CMD-如何将所有子文件夹中的所有文件重命名为父文件夹名称

Windows CMD:为文件夹中的所有文件夹添加后缀

在更改时将所有文件更改从一个文件夹连续复制到另一个文件夹(Windows)

Windows XAMPP在一个本地邮箱或文件夹中捕获所有PHP mail()

使 Windows 文件夹真正只读

一次调用即可列出Windows文件夹中具有某些扩展名的所有文件

命令列出文件夹中的所有文件以及Windows中的子文件夹

将“ TrustedInstaller”恢复为Windows文件夹中可执行文件的所有者

Windows批处理文件:转换子文件夹中的所有文件

可从 Kubuntu 访问的所有 Windows 文件,OneDrive 文件夹中的文件除外

将包含许多文件的文件夹拆分到多个子文件夹(Windows 10)

Windows命令以递归方式将所有文件复制到主文件夹

使用蝙蝠从文件夹中删除与Windows 10中的特定模式匹配的所有文件

如何使文件夹中的所有文件在Windows 7中不可执行?

无法从Eclipse(JAVA,Windows 7)的JNI文件夹中添加所有类文件

Windows 7-查找文件夹中单独存在的所有文件

从每个子文件夹 windows shell 中删除所有文件/目录

递归地将文件夹名称附加到其中的文件并将所有文件移动到基本文件夹 Windows 批处理文件

在Windows 7中无法取消设置“只读(仅适用于文件夹中的文件)”

Windows-搜索名称中包含“ @”的文件夹

XCOPY仅能从父文件夹及其所有子文件夹到Windows中的新文件夹的文件?

Windows 7:将列添加到所有音乐文件夹

Windows命令行:将所有子文件夹的内容移到父目录

将桌面文件夹重定向到Windows中的另一个文件夹

批量将文件移动到Windows中的另一个文件夹/目录?