Batch file 备份批处理文件,该文件解析特定字符串的目录,并根据结果将其发送到其他位置
我已经四处搜索了一段时间,尝试将各种不同的答案混合在一起,制作出一些可行的东西,但都没有成功。我认为解决方案可能是将DIR解析为一个文本文件,然后在循环中读取特定字符串的每一行,然后根据找到的结果将其自动复制到不同的目的地 文件夹名称相同,但版本号不同 如有任何想法/帮助,将不胜感激 例如:Batch file 备份批处理文件,该文件解析特定字符串的目录,并根据结果将其发送到其他位置,batch-file,Batch File,我已经四处搜索了一段时间,尝试将各种不同的答案混合在一起,制作出一些可行的东西,但都没有成功。我认为解决方案可能是将DIR解析为一个文本文件,然后在循环中读取特定字符串的每一行,然后根据找到的结果将其自动复制到不同的目的地 文件夹名称相同,但版本号不同 如有任何想法/帮助,将不胜感激 例如: 网络/共享/第一个网站名称唯一\u Sting\u v1>c:\Website backups\1st Website 网络/共享/第一网站 名称唯一\u Sting\u v2>c:\website ba
- 网络/共享/第一个网站名称唯一\u Sting\u v1>c:\Website backups\1st Website
- 网络/共享/第一网站 名称唯一\u Sting\u v2>c:\website backups\1st website
- 网络/共享/第二个网站名称唯一\u Sting\u v1>c:\Website backups\2nd Website
set vidx=0 >&2
for /F "tokens*" %%A in (get_dirs.txt) do (
SET /A vidx=!vidx! + 1
SET var!vidx!=%%A
)
set vidx=0 >&2
for /F "tokens*" %%A in (get_dirs.txt) do (
SET /A vidx=!vidx! + 1
SET var!vidx!=%%A
)
- 你问的问题还不完全清楚,但我认为这可能会有所帮助。似乎要测试文件夹名称并确定其是否包含字符串a。如果为true,则将其移动到备份文件夹a。否则,如果它包含字符串B,则将其移动到备份文件夹B。可能如此
有几种不同的方法可以测试变量是否包含字符串。最有效的方法之一是使用。这里有一个简单的例子
rem//遍历所有目录
对于/d%%I in(*)do(
rem//设置一个变量
设置“dir=%%~I”
雷//现在是有趣的部分
延迟扩展
如果不是“!dir!”==”!dir:1st Website=!”(
rem//第一场网站比赛!
xcopy“%%~I”“目的地1”
)否则,如果不是“!dir!”==”!dir:2nd Webiste=!”(
rem//第二次网站比赛!
xcopy“%%~I”“目的地2”
)
端部
)
因此,其工作方式是。在第一个if
语句中,您将取的值!迪尔代码>并且,如果出现1st网站
(不区分大小写),请将其替换为零。因此,如果未接触的dir
不再等于dir
,且位已删除,则会找到子字符串匹配
还有其他方法可以测试子字符串匹配<代码>echo%%~I|find/I“网站1”>NUL&&(找到匹配项)| |(不匹配)
将是另一种常见的方法。但是,使用内置的cmd解释器功能通常比调用可执行文件更有效——在本例中是find.exe
(或者findstr.exe
,正如您通常看到的那样)