You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让批处理脚本在目标文件所在目录运行C++程序?

问题

我正尝试编写一个.bat脚本,在更高端的计算环境中运行一个小型C++程序。该脚本在本地电脑可正常运行,但当前采用本地固定目录路径,无法直接给他人使用或在其他设备(如U盘)运行。

原脚本代码如下:

cd C:\Users\username\Desktop\file\subfile1\subfile2

此代码用于切换至桌面subfile2目录(C++程序及相关文件存放处),后续执行命令:

main -m C:\Users\username\Desktop\file\subfile1\subfile2\c++_file_part1 C:\Users\username\Desktop\file\subfile1\subfile2\c++_file_part2 > C:\Users\username\Desktop\file\subfile1\subfile2\output.txt

该命令运行由两部分组成的C++程序并输出结果。我希望只需提供subfile2文件夹,他人即可在自己的电脑上运行该程序,无需依赖固定目录路径。此外,该程序用于采用5种不同格式转录音频,我需通过脚本自动运行以测试不同格式的转录耗时差异。请问该如何实现?

解决方案

1. 改造脚本实现路径无关运行

Windows批处理可以利用%~dp0获取当前脚本所在的绝对路径,以此实现路径无关:

@echo off
:: 切换到脚本所在目录(即subfile2文件夹)
cd /d "%~dp0"

:: 用相对路径运行程序,无需固定路径
main -m c++_file_part1 c++_file_part2 > output.txt
  • %~dp0会自动解析出当前.bat脚本的完整目录路径,不管脚本在U盘还是其他电脑的任意位置,都能准确定位到subfile2文件夹。
  • 切换目录后,后续命令里的文件直接用相对路径即可,无需再写长串固定路径。

2. 自动测试多格式并统计耗时

要测试5种音频格式的转录耗时,可结合批处理循环和计时功能实现:

方案一:批处理原生命令计时

@echo off
cd /d "%~dp0"

:: 定义要测试的5种格式(请根据程序实际参数调整格式标识)
set "formats=mp3 wav flac ogg m4a"

:: 循环测试每种格式
for %%f in (%formats%) do (
    echo 正在测试格式:%%f
    echo 开始时间:%time%
    :: 替换-f %%f为程序实际指定格式的参数,比如--format %%f
    main -m c++_file_part1 c++_file_part2 -f %%f > output_%%f.txt
    echo 结束时间:%time%
    echo --------------------------
)
pause

方案二:PowerShell精准计时(推荐)

批处理原生time精度有限,用PowerShell可获取毫秒级计时:

@echo off
cd /d "%~dp0"

set "formats=mp3 wav flac ogg m4a"

for %%f in (%formats%) do (
    echo 正在测试格式:%%f
    powershell -Command "$start = Get-Date; .\main -m c++_file_part1 c++_file_part2 -f %%f > output_%%f.txt; $end = Get-Date; $耗时 = $end - $start; echo '耗时:' + $耗时.TotalSeconds + ' 秒'"
    echo --------------------------
)
pause
  • 每个格式的输出会单独保存到output_格式名.txt,方便后续对比结果。
  • 把-f %%f替换为你的C++程序实际指定音频格式的参数,确保和程序逻辑匹配。

注意事项

  1. 确保main.exe、c++_file_part1、c++_file_part2以及测试用音频文件都放在subfile2文件夹内。
  2. 如果程序依赖额外的.dll库文件,也要一并放入subfile2目录,避免运行时缺失依赖。

内容的提问来源于stack exchange,提问作者gdaem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:00:50