2015-01-08 2 views
0

Я пытаюсь изменить имя выходного файла, fOut, в файле bat, но пока не повезло.Как изменить имя выходного файла в файле bat?

Я разрабатываю Windows 7 и развертываю код на сервере Windows 2003.

код выглядит следующим образом:

set fName=%1 
set fExt=%fName:~-5,-1% 

set fOut=%fName:~0,-5%_PAD%fName:~-5% 

Примеры FOUT:

abcdc2evv_PAD.dat 

abcdefgh33ij_3737_PAD.dat 

Как я могу изменить FOUT, чтобы получить следующие имена файлов?

А. Добавление FMT_ в начале имени файла:

FMT_abcdc2evv_PAD.dat 

FMT_abcdefgh33ij_3737_PAD.dat 

B. Добавление FMT_ в начале имени файла и удалить _PAD до того .dat:

FMT_abcdc2evv.dat 

FMT_abcdefgh33ij_3737.dat 

Добавление: Только один аргумент передается файлу bat: путь + имя файла.

x.bat "C\test\xxx.dat" 

В файле летучей мыши:

@echo ^-input file name = ^%1 

set fName=%1 
set fExt=%fName:~-5,-1% 

set fOut==%fName:~0,-5%_PAD%fName:~-5% 

ответ

1

Я не знаю, если я что-то очевидное отсутствует - это не ясно, что вход этого сценария.

Однако добавление FMT_, прежде чем должны быть просто случай изменения:

set fOut=%fName:~0,-5%_PAD%fName:~-5% 

к:

set fOut=FMT_%fName:~0,-5%_PAD%fName:~-5% 

или если вы хотите, чтобы поставить версию FMT_ в другую переменную, а затем:

set bob=FMT_%fOut% 

Что касается удаления _PAD, можете ли вы не просто повторить линию SET fOut без _PAD? Казалось бы, это самый простой способ сделать это.На самом деле, удаление _PAD и префиксы FMT_, казалось бы, просто это:

set bob=FMT_%1 
+0

Я пробовал код ниже, но получил сообщение об ошибке. set fOut = FMT_% fName: ~ 0, -5% _PAD% fName: ~ -5% "в ExecuteCommand. ErrorMessage: неверно имя файла, имя каталога или тома." – user2142250

+0

В моей спешке я использовал пустой файл, который код исключает из обработки. После использования файла, имеющего одну строку данных, я обнаружил, что этот код, установленный fOut = FMT_% fName: ~ 0, -5% _PAD% fName: ~ -5%, работает. С другой стороны, этот код, set fOut =% FMT_% fName: ~ 0, -5% _PAD% fName: ~ -5%, не работает. Он создает пустой файл с именем fName. – user2142250

1

, если вы хотите удалить колодки просто вывести его из вашего оператора присваивания у вас есть:

set fOut=%fName:~0,-5%_PAD%fName:~-5% 

вы хотите:

set fOut=%fName:~0,-5%fName:~-5% 

t О добавить FMT_ просто добавить его в начале имени файла:

set fOut=%FMT_%fName:~0,-5%_PAD%fName:~-5% 
+0

Я пробовал код, но получил сообщение об ошибке. set fOut =% FMT_% fName: ~ 0, -5% _PAD% fName: ~ -5% "в ExecuteCommand. errorMessage: неверно имя файла, имя каталога или тома." – user2142250

+0

строка не создает ошибку для меня, я думаю, нам нужно еще немного вашего командного файла здесь, чтобы выяснить проблему – mgrenier

+0

Спасибо за ваш ответ. См. Выше раздел добавления. – user2142250

0

Если вы хотите, чтобы отделить имя файла от расширения, не беспорядок вокруг подсчета символов; есть встроенный метод (описанный в for /?):

echo Filename=%~n1 
echo Extension=%~x1 
echo resulting file="FMT_%~1" 
REM without _PAD, following with _PAD 
set filename="FMT_%~n1_PAD%~x1" 

Если действительно нужно удалить _PAD (как Крис уже отмечалось, вы явно добавить его с кодом), просто замените _PAD. с . только :

set filename=%filename:_PAD.=.% 
Смежные вопросы