@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=C:\Users\b00m49\Desktop\LSPTEST"
SET "sourcedir=U:\sourcedir"
for /r "%sourcedir%" %%a in (K_E*.dwg) do (
FOR /f "tokens=1,6delims=\" %%m IN ("%%a") DO (
REM %%n contain dirname or filename or empty
REM %%n is only empty for 0, 1 or 2 levels down.
IF "%%n"=="" (
SET "name=%%~na"
IF "!name:~9!"=="" IF "!name:~8!" neq "" (
REM the name is not longer than 9 characters, but IS longer than 8
ECHO(start /wait "C:\Program Files\Autodesk\Autocad 2013\acad.exe" "%%a" /b "C:\Users\b00m49\Desktop\LSPTEST\expSQM.scr")
)
)
)
)
GOTO :EOF
您需要更改sourcedir 的设置以适应您的情况。我使用了一个测试目录。
所需的 START 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(START更改为START以实际启动进程。
我不确定您所说的“向下两层”是什么意思 - 我假设目标目录 + 两层。由于您的实际目录比我的测试目录多 3 级,您可能需要将 1,6 更改为 1,9
只需使用标记化功能即可确保不超过 ?目录的级别,其中驱动器名和文件名计为级别。如果有,请忽略该文件。
然后获取名称 - 我们知道前 3 个字符是 K_E,但我们希望后面正好有 6 个字符,所以查看是否有 10+ 字符,如果没有,请确保字符 9 存在(字符从 0 开始计数) ) 如果这两个条件都有效,那么它必须是 K_E*6characters*
如果需要,可以确保所有 6 个字符都是数字,但实际上并未指定。
顺便说一句 - 要添加信息,请将其编辑到您的问题中,这样人们就不需要到处追逐。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\Users\b00m49\Desktop\LSPTEST"
for /r "%sourcedir%" %%a in (K_E*.dwg) do (
FOR /f "tokens=1,9delims=\" %%m IN ("%%a") DO (
REM %%n contain dirname or filename or empty
REM %%n is only empty for 0, 1 or 2 levels down.
IF "%%n"=="" (
SET "name=%%~na"
IF "!name:~9!"=="" IF "!name:~8!" neq "" (
REM the name is not longer than 9 characters, but IS longer than 8
ECHO(start /wait "" "C:\Program Files\Autodesk\Autocad 2013\acad.exe" "%%a" /b "C:\Users\b00m49\Desktop\LSPTEST\expSQM.scr")
)
)
)
)
pause
GOTO :EOF
这对我有用。
注意事项:
pause 行应该在它显示要执行的命令后停止该过程。
您需要将sourcedir 设置中的U: 更改为C: 以使其处理您的c: 驱动器。
您需要将ECHO(start 更改为start 才能实际执行autocad 处理。此技术(echoing 命令)用于显示 命令以对其进行验证。请注意,我还特意插入了一对兔耳朵 (""),因为 start 的第一个引用参数被视为窗口标题。