【发布时间】:2016-02-10 15:06:12
【问题描述】:
我有完整路径(使用 "%%~fl" 或 %%~l)
E:\Documents\Windows-Bash\CheckModels\SB3\models\TEST3\Cerus\Modbridge\Core\g-221.mdl
我的基本路径(根据 %~dp0 )是:
E:\Documents\Windows-Bash\CheckModels\SB3\
如何提取:
models/TEST3/Cerus/Modbridge/Core/g-221.mdl
在文本文件中搜索它。
我的批处理脚本如下:
echo off
set DataBase=E:\Documents\Windows-Bash\CheckModels\SB3\DB\trackassembly_init.lua
set AddModel=models_present.txt
set MisModel=models_missing.txt
set BasePath=%~dp0
set Model
dir /a-d /b /s *.mdl > %AddModel%
for /F "tokens=*" %%l in ('type "%AddModel%"') do (
set Model=%%~l
:: ?[1] Process the %Model% so it becomes "models/TEST3/Cerus/Modbridge/Core/g-221.mdl"
:: ?[2] IF (not found %Model% in the contents of %DataBase% ) THEN
:: ?[2] echo Model > MisModel ( Append missing file )
:: ?[2] END
)
del %AddModel%
echo End
timeout 25
如何用真实的东西替换 ?[1] 和 ?[2] 中的伪代码? 我可以使用 C/C++ 轻松转换字符串,但不需要其他文件。有没有办法将整个东西转换为 C/C++ ?
【问题讨论】:
-
您似乎对这里的术语感到困惑。 Bash 是一个 Unix shell;它当然也存在于 Windows 端口中,但是您显示的代码绝对不是 bash 代码。我编辑了你的问题来解决这个明显的困惑。
-
是的,也许。从 Windows BATCH 开始,它是一个“BAT”文件。一个包含dos命令的文件,告诉windows该做什么......我可能会尝试用C++来做整个瘦,但我认为这种方式更干净......
-
您可以使用 set 命令进行字符串替换,以删除批处理文件所在文件名的部分路径。
-
我猜 Magoo 在下面发布了什么,但不知何故我无法让它工作.. 抱歉 Squashman 提出了这个愚蠢的问题,但我应该怎么做?
-
已经用 C++ 和一批。你批量调用 C++ 应用程序并完成...
标签: windows batch-file str-replace