我编写了以下批处理脚本,它在一个目录上运行另一个批处理脚本,或者通过添加标志在目录树上运行,然后在不同驱动器 (Z:) 上的等效目录或目录树上运行。无论我选择哪个选项,它都会输出错误“系统找不到指定的路径”。如果我只在一个目录上执行它,它确实会执行它应该执行的操作,即使它会给出错误。它不能在目录树上成功运行。我在没有关闭 @echo 的情况下运行它,试图了解它失败的地方,但没有成功。它试图更改的目录确实存在。
@echo off
set origdir=%CD%
if X%~f1==X (
echo Please input a directory.
goto done
)
chdir /d %~f1
for %%X in (myotherscript.bat) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo myotherscript is not in your PATH
)
if X%2==X/R (
goto recursive
) else ( goto single )
:recursive
for /d /r %%G in (.) do call myotherscript
echo Z:%~p1
chdir /d "Z:%~p1"
for /d /r %%G in (.) do call myotherscript
goto ended
:single
call myotherscript
echo Z:%~p1
chdir /d "Z:%~p1"
call myotherscript
goto ended
:ended
chdir /d origdir
goto done
:done
pause
这是“myotherscript”是的,purge 确实存在。
@echo off
if exist "D:\path\to\purge.bat" (
call purge
for %%f in (*.log.*) do call :renameit "%%f"
for %%f in (*.drw.*) do call :renameit "%%f"
for %%f in (*.asm.*) do call :renameit "%%f"
for %%f in (*.prt.*) do call :renameit "%%f"
goto done ) else (
echo Purge does not exist.
goto done )
:renameit
ren %1 *.1
:done
如有任何帮助,我们将不胜感激。 谢谢
最佳答案
我不确定为什么这个(非常老的)问题被重新激活。但既然已经发生了,让我们看看是否可以结束它。
这里似乎有两个问题。第一:
it outputs the error "The system cannot find the path specified."
这行看起来像是一个简单的错字:
chdir /d origdir
如果没有“%”标记,这将尝试更改为字面上名为 origdir
的目录,而不是运行脚本的原始目录,即:
chdir /d %origdir%
第二个问题是:
It does do what it's supposed to if I do it on just one directory, even though it gives the error. It doesn't work successfully on a directory tree.
猜测,这是由于这一行:
if X%2==X/R
“IF”区分大小写。如果您尝试使用 /r
运行它,它不会看到递归请求,并且将始终执行 single
。
关于batch-file - 批处理脚本失败并显示 "The system cannot find the path specified",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15162358/