我想循环if exists行一次,以便该行连续运行,直到找到一个未使用的序列号(它必须在同一行上循环,因此它成为if语句的一部分)。有没有更好的方法来实现这一目标?
if exist "*%num%*" (set /a num+=jump)
更新
@echo off
set /p usrname=enter folder name
set /a num=100
set /a jump=10
if exist "*%num%*" (set /a num+=jump)
MD %num%_%usrname%
答案 0 :(得分:1)
你试图做的事情是:
WHILE IF NOT EXIST "*%num%*" SET /A num+=jump
没有这样的事情。在批处理文件中,您可以使用非常有限的可用命令进行编程。 Here is all the commands you can use.
你能做些什么才能把它变成2行呢?
@echo off
set /p usrname=enter folder name
set /a num=100
set /a jump=10
:loop
if exist "*%num%*" (set /a num+=jump & GOTO loop)
MD %num%_%usrname%
如果你真的想缩短它,你可以使用条件执行。当目录已存在时,递增数字并转到循环。
@echo off
set /p usrname=enter folder name
set /a num=100
set /a jump=10
:loop
MD "%num%_%usrname%" 2>nul || (set /a num+=jump & GOTO loop)
答案 1 :(得分:0)
这个怎么样?
@echo off
set /p usrname=enter folder name
set /a num=100
set /a jump=10
:test_exist
if not exist "*%num%*" goto found_one
set /a num+=jump
goto test_exist
:found_one
MD %num%_%usrname%
技术上存在竞争条件,但只有当其他人/进程同时在文件夹中工作时才会有效。
答案 2 :(得分:0)
就个人而言,我使用
@echo off
set /p usrname=enter folder name
set /a num=100
set /a jump=10
for /L %%a in (%num%,%jump%,2000000000) do if not exist "*%%a*" set /a num=%%a & MD %%a_%usrname%&goto done
:done