Batch file 正在尝试创建一个windows批处理脚本,该脚本只在文件夹中的某个特定级别的目录中循环
我有许多excel文件嵌套在一个目录中的单独文件夹中。这些文件夹中的每一个都有任意数量的其他文件,但我只对excel文件感兴趣。我正在尝试将所有excel文件复制到一个新文件夹中 我所能创造的就是这个Batch file 正在尝试创建一个windows批处理脚本,该脚本只在文件夹中的某个特定级别的目录中循环,batch-file,Batch File,我有许多excel文件嵌套在一个目录中的单独文件夹中。这些文件夹中的每一个都有任意数量的其他文件,但我只对excel文件感兴趣。我正在尝试将所有excel文件复制到一个新文件夹中 我所能创造的就是这个 对于(*.xls,*.xlsm)中的/r“C:\Folder One\Folder Two”%%f,执行@copy“%%f”C:\Users\ME\Desktop\New Excel Folder” 问题是,每个子目录可能有另外一个或两个文件夹,其中可能有也可能没有我不感兴趣的错误excel文件。
对于(*.xls,*.xlsm)中的/r“C:\Folder One\Folder Two”%%f,执行@copy“%%f”C:\Users\ME\Desktop\New Excel Folder”
问题是,每个子目录可能有另外一个或两个文件夹,其中可能有也可能没有我不感兴趣的错误excel文件。我的解决方案捕获整个目录结构中的每个excel文件
我正在寻找一种方法,只从所有第三级向下的文件夹中获取excel文件,所以c:\Folder One\Folder Two\中的所有内容都在这一级,但并没有更深的文件夹。希望这是有意义的。@ECHO OFF
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
rem源目录、目标目录、目标目录的以下设置,
rem批处理目录、文件名、输出文件名和临时文件名[如果显示]是名称
我用于测试的rem,故意包含包含空格的名称,以确保
rem确认流程使用这些名称工作。这些将需要改变,以适应您的情况。
设置“sourcedir=u:\your files\t w o”
设置“destdir=u:\your results”
对于/r“%sourcedir%”%%f in(*.xls,*.xlsm)do for/f令牌=4,5delims=\“%%q in(“%%dpf”)do IF“%%r”==”for%%e in(.xls.xlsm)do IF/i”%%e”==“%%xf”ECHO@copy”%%f“%destdir%”
后藤:EOF
我已经更改了目录名以适应我的测试设置
@copy
命令是echo
ed,用于验证。移除回显
以实际执行复制
过滤过程分为两个阶段。首先,检查文件路径中的\
字符数-%%r
将在超过所需目录级别时非空。然后显式检查文件名是否具有所需的扩展名,因为默认情况下,filename.xlsx
将自动生成与.xls
匹配的短文件名
代币:
delims=\xyz”
定义了一个分隔符字符集[“\”,“x”,“y”,“z”]
。我总是将delims=
选项放在最后,以便出现在delims=
和“
之间的任何字符都包含在分隔符字符集中
正在检查的字符串被视为
[[delimiter sequence]][token1][delimiter sequence][token2][delimiter sequence][token3][delimiter sequence][token4][delimiter sequence][token5]
其中,分隔符序列是任何分隔符的序列。初始分隔符序列是可选的
因此,当分隔符
单独设置为\
时,一个示例字符串,c:\Folder One\Folder Two\THIS FOLDERS AT THIS LEVEL\但是no.deeper
将被解析为
令牌1c:
令牌2
文件夹1
令牌3
文件夹2
令牌4
此级别的这些文件夹
令牌5
但没有更深的标记
令牌6为空 但是,我发布的代码将
for…%%q
应用于%%dpf
,而不是%%f
或%%dpnxf
或%%ff
,因此要分析的字符串是c:\Folder One\Folder Two\这一级别的这些文件夹\
,其中令牌5将为空。如果有额外的目录级别,那么令牌5将不会为空
我建议要么是引入了一个游离的分隔符,要么是正在解析%%~dpf
以外的字符串
我从不使用
%%f
作为文件名,不管它最初的吸引力如何,因为f
是一个元变量修饰符,并且容易出现打字错误。您应该能够用一个robocy
命令做任何您想做的事情,因为它有以下选项:/LEV:n::只复制源目录树的前n级。
谢谢。今天晚些时候我需要测试一下,但它看起来很有希望!工作几乎完美!我唯一要做的改变就是把熟食店从5家换到6家。不要问我为什么,因为我不确定我是否理解这一点上的代币和熟食。只要稍加改动,它就可以正常工作。非常感谢。