【问题标题】:Windows For Loop with * Token带有 * 令牌的 Windows For 循环
【发布时间】:2016-05-31 13:19:57
【问题描述】:

我正在尝试使用特定(绝对完整路径)和 * 通配符文件/文件夹名称组合显示文件/文件夹内容的循环,但我的代码正在跳过 * 通配符搜索。我正在使用 DIR 命令进行搜索,因为它适用于文件夹/目录和文件。

SETLOCAL EnableDelayedExpansion
SET VAR="c:\users\admin\documents\" "my files*" "*.MYO" "backups" "history.*" "History" "*.db" "all accounts.txt"
SET "ArchiveInclude="
FOR %%a IN (%VAR%) DO (
 IF "!a::!"=="!a!" (
  SET LookUpSet=DIR /ON /B /S "%%~a"
  FOR /F "Delims=" %%F IN ('!LookUpSet!') DO (
   SET ArchiveInclude=!ArchiveInclude! "%%~F"
  )
 ) ELSE ( SET ArchiveInclude=!ArchiveInclude! "%%~a" )
)

很遗憾,ArchiveInclude 不包含任何“我的文件*”“.myo”或“历史记录。”搜索结果。 %%a 永远不会处理任何包含通配符 * 的字符串。

我需要 ArchiveInclude 来包含对指定的所有文件/文件夹的所有完整路径引用,例如

ECHO !ArchiveInclude!
"c:\users\admin\documents\" "c:\Users\User 3\my files here\" "c:\Users\User 1\Documents\my files01.txt" "c:\Users\User 1\Documents\my files02.txt" "c:\Users\User 1\Documents\my files01.jpg" "c:\Users\User 1\Documents\my files02.jpg" "c:\Users\User 2\Documents\My Account Files.MYO" "c:\Users\User 2\Documents\Business\Sales Accounts.MYO" "c:\Program Files\history.db" "c:\Program Files\history.txt" "c:\Users\User 1\Documents\History\" "c:\Users\User 1\Documents\Databases\afile.db" "c:\Users\User 1\Documents\Databases\data.db" "c:\Users\User 1\Documents\Databases\last.db" "c:\Users\User 2\Documents\all accounts.txt"

【问题讨论】:

    标签: windows batch-file


    【解决方案1】:

    问题出在这一行:

    FOR %%a IN (%VAR%) DO (
    

    您已将 VAR 设置为以空格分隔的文件名列表,其中一些带有通配符。当您有通配符时,FOR 命令会在当前目录中搜索与通配符匹配的任何文件(键入 FOR/? 以获得帮助。)这不是您想要的。你不希望FOR 在那个时候搜索;您只希望它遍历给定的字符串,而不管它们包含什么。

    幸运的是,您甚至不必使用FOR,因为DIR 命令可以采用多个参数。因此,您可以完全摆脱 FOR 行并改为这样做:

     SET LookUpSet=DIR /ON /B /S %VAR%
    

    【讨论】:

    • 这适用于单个文件/文件夹名称 + 通配符。但是,我还需要一种从 DIR 命令中排除已指定(完整路径)文件夹/文件的方法,因为 DIR 将单独列出完整路径文件夹的所有内容(这不是必需的)。即 VAR="C:\users\admin\documents\" "我的文件*" ".myo" "backups" "history"。 “所有帐户.txt”。 DIR 命令将列出“C:\users\admin\documents\”的所有内容,这不是必需的。抱歉,OP 不够清晰,我现在已经更新了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 2013-10-08
    • 2014-01-20
    • 2015-01-26
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多