如何在 Batch 中移动以特定字符串开头的文件夹
How to move a folder that starts with a specific string in Batch
我不会编写很多脚本,所以我认为这完全是初学者的东西,所以
我有以下问题,我想移动(如剪切和粘贴)一个总是以相同字符串开头但永远不会有相同结尾的文件夹到另一个文件夹。
我正在 Windows 服务器上运行 Batch。批处理正在将不同的备份文件复制到带有时间戳的目录中。这很好用,因为我需要移动的所有其他文件和目录都有静态名称。
但是我 运行 遇到了具有动态名称的 folder/directory 的问题。该文件夹始终以应用程序的 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%
但其中 none 个成功了
所以就像我说的可能没什么大不了的,但我仍然需要问一下。
总结一下:
总是starts/contains具有相同字符串的目录需要移动到另一个目录。
一些目录名称 f.E.
Test_31tß0t30
Test_3tggwqgrgwrg
Test_ksmrh82ra
提前谢谢你,抱歉我的英语不好。
move
command seems to not accept wildcards for source directories, so you will need a for /D
loop先解析路径:
for /D %%I in ("%ROOT%\Test*") do move "%%~I" "%ROOT%\%fullstamp%"
我还引用了源路径和目标路径以避免出现空格或其他特殊字符的问题。
你使用变量 %path%
的事实让我认为你将它设置为你的操作的根路径,但 PATH
是系统用来查找可执行文件的保留变量,所以你不应该(过度)写它。这就是为什么我在我的代码建议中使用了另一个变量名 ROOT
。
我不会编写很多脚本,所以我认为这完全是初学者的东西,所以 我有以下问题,我想移动(如剪切和粘贴)一个总是以相同字符串开头但永远不会有相同结尾的文件夹到另一个文件夹。
我正在 Windows 服务器上运行 Batch。批处理正在将不同的备份文件复制到带有时间戳的目录中。这很好用,因为我需要移动的所有其他文件和目录都有静态名称。
但是我 运行 遇到了具有动态名称的 folder/directory 的问题。该文件夹始终以应用程序的 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%
但其中 none 个成功了
所以就像我说的可能没什么大不了的,但我仍然需要问一下。
总结一下:
总是starts/contains具有相同字符串的目录需要移动到另一个目录。 一些目录名称 f.E.
Test_31tß0t30
Test_3tggwqgrgwrg
Test_ksmrh82ra
提前谢谢你,抱歉我的英语不好。
move
command seems to not accept wildcards for source directories, so you will need a for /D
loop先解析路径:
for /D %%I in ("%ROOT%\Test*") do move "%%~I" "%ROOT%\%fullstamp%"
我还引用了源路径和目标路径以避免出现空格或其他特殊字符的问题。
你使用变量 %path%
的事实让我认为你将它设置为你的操作的根路径,但 PATH
是系统用来查找可执行文件的保留变量,所以你不应该(过度)写它。这就是为什么我在我的代码建议中使用了另一个变量名 ROOT
。