2014-01-10 3 views
0

Happy Think Think Tank! Мне нужна помощь с Batch-скриптом. В частности, мне нужна помощь с некоторым синтаксисом оператора IF.Необходима помощь в пакетном скрипте

У меня есть сценарий, который переименовывает файлы. Есть два файла: один заканчивается на четыре цифры, а другой заканчивается на пять цифр. Файлы будут переименованы с переменными, которые я уже предустановил ранее в моем скрипте.

Так вот сценарий: У нас есть два файла в директории, расположенной на

C: \ Users \ имя пользователя \ Desktop \ тест-Dir

Есть два файла в пределах тест-директории:

file1.12345

file2.1234

Четырехзначный финал - это один тип переменной (VAR1), тогда как файл, заканчивающийся на пять цифр, является другим типом переменной (VAR2).

мне нужен, если заявление:

а) прочитать все файлы (ы) с выбранной директории (без использования группового символа, если это возможно). b) определяют на основе количества цифр после «.». какую переменную использовать. c) после принятия этого определения переименуйте файл с соответствующими переменными.

Окончательный повторно именовании как так: yyyymmddtype.1234/12345

Так в основном он будет использовать переменную DATESTAMP я уже создан, тип переменной я уже создан, чтобы быть введен в, если заявление и добавьте исходные конечные цифры файла.

Я знаю, что это похоже на много, но я больше такой парень-сценарист. У меня есть все элементы на месте, мне просто нужно утверждение if, и что-то похожее на какой-то цикл, чтобы связать все это вместе.

Любая помощь будет замечательной!

Спасибо!

ответ

0

Извините, не вариант, где вы просите. Вместо того, чтобы итерация полного списка проверки каждый файл для расширения соответствия, перебирать список моделей, которые будут фильтровать список файлов, переименование соответствующих файлов с asociated «типом»

for %%v Переберет список переменного, for %%a будет расколоть содержание переменного в шаблоне и типа, for %%f будет генерировать список файлов, фильтр с findstr, используя извлеченный шаблон и переименовать соответствующие файлы с соответствующим «типом»

переименовать команду предшествуют с echo для вывода команд на консоль. Если выход правильный, удалите echo, чтобы переименовать файлы.

@echo off 

    rem Variables defined elsewhere 
    set "folder=c:\somewhere" 
    set "timestamp=yyyymmdd" 

    rem Rename pattern variables in the form pattern;type 
    set "var1=\.....$;type1" 
    set "var2=\......$;type2" 

    set "var1=\.[^.][^.][^.][^.]$;type1" 
    set "var2=\.[^.][^.][^.][^.][^.]$;type2" 


    setlocal enableextensions disabledelayedexpansion 

    for %%v in ("%var1%" "%var2%") do for /f "tokens=1,* delims=;" %%a in ("%%~v") do (
     for /f "tokens=*" %%f in ('dir /a-d /b "%folder%" ^| findstr /r /c:"%%~a"') do (
      echo ren "%folder%\%%~f" "%timestamp%%%~b%%~xf" 
     ) 
    ) 

    endlocal 
+0

Чувак !!! Если бы вы были рядом, я бы купил вам пиво! – NerdyBird

0
@ECHO OFF &SETLOCAL 
set "yyyymmdd=yyyymmdd" 
set "VAR1=VAR1" 
set "VAR2=VAR2" 
for /f "delims=" %%a in ('dir /b /a-d^|findstr /re ".*\....."') do echo(ren "%%~a" "%yyyymmdd%%VAR1%%%~xa" 
for /f "delims=" %%a in ('dir /b /a-d^|findstr /re ".*\......"') do echo(ren "%%~a" "%yyyymmdd%%VAR2%%%~xa" 

удалить echo(, чтобы заставить его работать.

0

Если я понимаю, что вы тогда это будет переименовать два файла, используя предустановленные переменные для каждого из них:

for %%a in ("%userprofile%\Desktop\test-dir\*") do (
    if "%%~xa"==".12345" ren "%%a" "%variableA%-%variableB%%%~xa" 
    ) else (
    ren "%%a" "%variableC%-%variableD%%%~xa" 
    ) 
) 
Смежные вопросы