Проверьте на пустую переменную в пакете Windows

Тип float удаляет завершающие нули, по крайней мере, для SQL Server. Попробуйте разыграть decimal и float.

SELECT CAST(12.350000 as float)

Возвращает

12,35

66
задан John M Gant 8 April 2009 в 18:48
поделиться

3 ответа

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

IF [%1]==[] echo Value Missing

или

IF [%1] EQU [] echo Value Missing

The Страница SS64 на IF поможет вам здесь. В разделе «Существует ли% 1?».

Вы не можете установить позиционный параметр, поэтому вы должны сделать что-то вроде

SET MYVAR=%1

. Затем вы можете переустановить MYVAR на основе его содержимого.

122
ответ дан dten 24 November 2019 в 14:50
поделиться

Оба ответа верны, но я делаю свои немного разные. Возможно, вы захотите рассмотреть пару вещей ...

Запустите пакет с помощью:

SetLocal

и завершите его с

EndLocal

. Это позволит сохранить все ваши «SET» действительными только во время текущего сеанса и не покинет его. переменные, оставленные вокруг именованных как «FileName1» или любые другие переменные, которые вы установили во время выполнения, могут помешать следующему запуску пакетного файла. Таким образом, вы можете сделать что-то вроде:

IF "%1"=="" SET FileName1=c:\file1.txt

Другой трюк, если вы предоставляете только 1 или 2 параметра, используйте команду SHIFT, чтобы переместить их, поэтому искомый параметр ВСЕГДА равен% 1 ...

Например, обработайте первый параметр, сдвиньте их, а затем сделайте это снова. , вы не программируете% 1,% 2,% 3 и т. д.

28
ответ дан LarryF 24 November 2019 в 14:50
поделиться
rem set defaults:
set filename1="c:\file1.txt"
set filename2="c:\file2.txt"
set filename3="c:\file3.txt"
rem set parameters:
IF NOT "a%1"=="a" (set filename1="%1")
IF NOT "a%2"=="a" (set filename2="%2")
IF NOT "a%3"=="a" (set filename1="%3")
echo %filename1%, %filename2%, %filename3%

Будьте осторожны с кавычками, хотя они могут и не понадобиться в ваших переменных.

13
ответ дан Stanislav Kniazev 24 November 2019 в 14:50
поделиться