Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 备份批处理文件,该文件解析特定字符串的目录,并根据结果将其发送到其他位置_Batch File - Fatal编程技术网

Batch file 备份批处理文件,该文件解析特定字符串的目录,并根据结果将其发送到其他位置

Batch file 备份批处理文件,该文件解析特定字符串的目录,并根据结果将其发送到其他位置,batch-file,Batch File,我已经四处搜索了一段时间,尝试将各种不同的答案混合在一起,制作出一些可行的东西,但都没有成功。我认为解决方案可能是将DIR解析为一个文本文件,然后在循环中读取特定字符串的每一行,然后根据找到的结果将其自动复制到不同的目的地 文件夹名称相同,但版本号不同 如有任何想法/帮助,将不胜感激 例如: 网络/共享/第一个网站名称唯一\u Sting\u v1>c:\Website backups\1st Website 网络/共享/第一网站 名称唯一\u Sting\u v2>c:\website ba

我已经四处搜索了一段时间,尝试将各种不同的答案混合在一起,制作出一些可行的东西,但都没有成功。我认为解决方案可能是将DIR解析为一个文本文件,然后在循环中读取特定字符串的每一行,然后根据找到的结果将其自动复制到不同的目的地

文件夹名称相同,但版本号不同

如有任何想法/帮助,将不胜感激

例如:

  • 网络/共享/第一个网站名称唯一\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
    )
    
  • 网络/共享/第二网站 名称唯一\u Sting\u v2.5>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
    )
    

    • 你问的问题还不完全清楚,但我认为这可能会有所帮助。似乎要测试文件夹名称并确定其是否包含字符串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
      ,正如您通常看到的那样)