Max
Max

Reputation: 62

How to move a folder that starts with a specific string in Batch

Im not scripting alot so i think this is total beginner stuff so i have following problem, i want to move (like cut-out and paste) a folder ,that always starts with the same string but never have the same ending, to another folder.

Im working on a Windows Server that runs a Batch. The Batch is copying different Backup-Files to a Directory with a timestamp. This works fine because all the other Files and diretorys that i need to move have static names.

But im running into a problem with a folder/directory that has a dynamic name. The Folder starts always with the GUID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx} of the Application, so the start fo the directory name is static. But at the end, the Application is adding a underline _ followed by random charaters so the directory looks like following f.E. : {11111111-1111-1111-1111-11111111111}_ehgwuh238th

This is how my other files with the static names are handled so far:

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

path contains the path to the directory that includes the files that need to be moved. fullstamp contains a timestamp which were used to create a new directory at the beginning of the batch.

I tried something like:

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

But none of these worked out

So like i said probably not a big deal but i still need to ask.

To summarize it:

the directory that always starts/contains with the same string need to be moved to another directoy. Some directoy names f.E.

Test_31tß0t30 
Test_3tggwqgrgwrg 
Test_ksmrh82ra

Thank you in advance and sorry for my bad english.

Upvotes: 0

Views: 1359

Answers (1)

aschipfl
aschipfl

Reputation: 34909

The move command seems to not accept wildcards for source directories, so you will need a for /D loop to resolve the path first:

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

I also quoted both source and destination paths in order to avoid trouble with whitespaces or other special characters.

The fact that you use a variable %path% makes me think you set it to the root path of your operation, but PATH is a reserved variable used by the system to find executables, so you should not (over-)write it. That is why I used another variable name ROOT in my code suggestion.

Upvotes: 1

Related Questions