【问题标题】:How to move a folder that starts with a specific string in Batch如何在批处理中移动以特定字符串开头的文件夹
【发布时间】:2019-08-06 13:53:07
【问题描述】:

我不会写很多脚本,所以我认为这完全是初学者的东西,所以 我有以下问题,我想将一个总是以相同字符串开头但从不具有相同结尾的文件夹移动(如剪切和粘贴)到另一个文件夹。

我正在使用运行批处理的 Windows 服务器。批处理正在将不同的备份文件复制到带有时间戳的目录。这很好用,因为我需要移动的所有其他文件和目录都有静态名称。

但是我遇到了一个具有动态名称的文件夹/目录的问题。文件夹始终以应用程序的 GUID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx} 开头,因此目录名称的开头是静态的。但最后,应用程序添加下划线 _ 后跟随机字符,因此目录看起来像 f.E. : {11111111-1111-1111-1111-11111111111}_ehgwuh238th

到目前为止,我的其他具有静态名称的文件是这样处理的:

if exist %path%\%fullstamp% move %path%\Test %path%\%fullstamp%

path 包含到包含需要移动的文件的目录的路径。 fullstamp 包含一个时间戳,用于在批处理开始时创建一个新目录。

我尝试了类似的方法:

move %path%\Test* %path%\%fullstamp%
move %path%\Test*. %path%\%fullstamp%
move %path%\Test*\ %path%\%fullstamp%

但这些都没有解决

所以就像我说的可能没什么大不了的,但我仍然需要问。

总结一下:

总是以相同字符串开头/包含的目录需要移动到另一个目录。 一些目录名称 f.E.

Test_31tß0t30 
Test_3tggwqgrgwrg 
Test_ksmrh82ra

提前谢谢你,对不起我的英语不好。

【问题讨论】:

    标签: windows batch-file cmd directory move


    【解决方案1】:

    move command 似乎不接受 wildcards 作为源目录,因此您需要先使用 for /D loop 来解析路径:

    for /D %%I in ("%ROOT%\Test*") do move "%%~I" "%ROOT%\%fullstamp%"
    

    我还引用了源路径和目标路径,以避免出现空格或其他特殊字符。

    您使用变量%path% 的事实使我认为您将其设置为操作的根路径,但PATH 是系统用于查找可执行文件的保留变量,因此您不应该(过度- )写下来。这就是为什么我在代码建议中使用了另一个变量名称 ROOT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多