Оба ответа верны, но я делаю свои немного по-другому. Возможно, вы захотите рассмотреть пару вещей ...
Запустить пакет с:
SetLocal
и завершите его
EndLocal
Это сохранит все ваши «SET» действительными только во время текущего сеанса и не оставит переменные, оставленные вокруг, с именем, например «FileName1», или любые другие переменные, которые вы установили во время выполнения, которые могут помешать следующему запуску пакетный файл. Итак, вы можете сделать что-то вроде:
IF "%1"=="" SET FileName1=c:\file1.txt
Другой трюк в том случае, если вы предоставляете только 1 или 2 параметра, используйте команду SHIFT для их перемещения, поэтому вы ищете ВСЕГДА на% 1 ...
Например, обработайте первый параметр, сдвиньте их, а затем сделайте это снова. Таким образом, вы не будете жестко кодировать% 1,% 2,% 3 и т. Д. *
Пакетный процессор Windows намного мощнее, чем считают люди. Я сделал с ним некоторые сумасшедшие вещи, в том числе вычисление вчерашней даты, даже по месяцам и годам, включая високосный год, и локализация и др.
Если вы действительно хотите проявить творческий подход, вы можете вызывать функции в пакетном процессоре ... Но это действительно для другого обсуждения ...:)
Да, и не называйте ваши командные файлы .bat . Либо .. Они .cmd сейчас .. хе ..
Надеюсь, это поможет.