Dennis identificou um problema e forneceu uma solução em sua resposta. Mas ainda há outras questões.
1) Seu código set partial_name = %%G
incluirá um espaço à direita no nome da variável e um espaço à esquerda no valor. O código deve ler set partial_name=%%G
2) Seu valor %1
já pode ter sido citado. Nesse caso, você deve remover as aspas antes de adicionar as suas próprias usando "%~1"
em vez de "%1"
.
3) Talvez não seja um problema no seu caso, mas geralmente é uma boa ideia incluir caminhos de arquivo entre aspas, caso o nome contenha espaços ou caracteres especiais.
4) Eu estou supondo que você quer fazer uma comparação numérica. O comando IF usa quase as mesmas regras que o comando SET / A quando tenta analisar um número - qualquer número prefixado com 0 será tratado como notação hexadecimal. Se encontrar um dígito hexadecimal inválido como 8 ou 9, o IF reverterá para uma comparação de string em vez de uma comparação numérica.
Por exemplo, if 09 lss 8 (echo true) else echo false
retorna true
.
Portanto, se o segundo segmento do seu nome de arquivo tiver o potencial de ter zeros à esquerda, você precisará fazer mais trabalho.
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\"
)