2015-10-19 1 views
-1

Предположим, что у меня есть «o1usr123» в качестве имени компьютера. Мне нужно создать папку «usr-123», если она не существует, и также использовать ее как путь.Как разбить строку со строкой и изменить ее, чтобы получить имя папки в пакетном файле Windows?

Примечание: o1usr не изменяется. Изменяется только число.

set "String=%ComputerName%" ::String is "o1usr123" 
set "User=%String:*o1=%" 
set "Num=%User:*usr=%" 
set "FName=%User%-%Num%" 

::Determine if FName exist, if not create a folder in ServerPath. 
::Then copy files from DATALOG to DATALOG\%FName% 

set "ServerPath=\\IYA-PC\DATALOG\%FName%" ::FName should be "usr-123" 
set "ClientPath=%SystemDrive%\DATALOG" 

Это правильно? Можно ли включить «o1usr123» в «usr-123», используя код выше? Можете ли вы помочь мне определить, существует ли FName и создать папку, если она не существует.

+1

В чем проблема? – ConnorsFan

+0

Извините @ConnorsFan, я добавил вопрос – IyaSheep

ответ

0

Если, как указано, 01usr не меняется,

set "FName=usr-%computername:01usr=%" 

То есть, usr- приставка с последующим содержанием переменной computername без 01usr

После того, как у нас есть имя целевой папки

set "ServerPath=\\IYA-PC\DATALOG\%FName%" 
set "ClientPath=%SystemDrive%\DATALOG"  

rem Just try to create the folder (and hide errors if it exist) 
md "%serverPath%" 2>nul 

rem Try to change to target folder (ensure it exists, maybe it could not be created), 
rem copy files and once done restore previous active directory 
pushd "%ServerPath%" && (
    xcopy /y "%ClientPath%" . 
    popd 
) 

После pushd оператор условного исполнения &&. Он будет выполнять код в скобках только в том случае, если pushd был успешным.

+0

Да, это более эффективно. Спасибо! – IyaSheep