Деннис определил одну проблему и дал решение в своем ответе. Но есть и другие вопросы.
1) Ваш кодовый set partial_name = %%G
будет содержать завершающий пробел в имени переменной и начальный пробел в значении. Код должен читать set partial_name=%%G
2) Ваше значение %1
уже может быть заключено в кавычки, и в этом случае вы должны удалить кавычки, прежде чем добавлять свои собственные, используя "%~1"
вместо "%1"
.
3) Возможно, это не проблема в вашем случае, но, как правило, рекомендуется заключать пути к файлам в кавычки, если имя содержит пробел или специальные символы.
4) Я предполагаю, что вы хотите сделать числовое сравнение. Команда IF использует почти те же правила, что и команда SET /A, когда она пытается проанализировать число. Любое число с префиксом 0 будет рассматриваться как шестнадцатеричное представление. Если он находит недопустимую шестнадцатеричную цифру, такую как 8 или 9, тогда IF вернется к сравнению строк вместо числового сравнения.
Например, if 09 lss 8 (echo true) else echo false
возвращает true
.
Таким образом, если во втором сегменте вашего имени файла есть потенциальные нули, то вам нужно проделать дополнительную работу.
set "partial_name="
for /f "tokens=2 delims=." %%G in ("%~1") do (
for /f "tokens=* delims=0" %%N in ("%%G") do set /a "partial_name=%%N"
if not defined partial_name set "partial_name=0"
)
if %partial_name% GEQ 9200 (
move "I:\rosa\transfertmp\%1" "L:\OSLDos\Tmp\"
) else (
move "I:\rosa\transfertmp\%1" "L:\LdisOSLDos\Tmp\"
)