【发布时间】:2013-04-02 21:47:32
【问题描述】:
我正在编写一个类似于“cd”命令但使用快捷方式的程序。
(保存路径:cds -s 1 C:\saved\directory\path) (切换到保存的路径:cds 1)
为此,我尝试了 chdir() 和 system(),但效果只在程序运行时持续。一旦程序终止,路径就会恢复到程序运行之前的状态。我目前正在使用一种解决方法,方法是使用一个 bat 文件加载我的程序,该文件运行另一个由程序创建的 bat 文件(包含 cd 命令)。
所以我的 bat 文件类似于:
cds.exe %1 %2 %3
C:\temp\cds_cmd.bat
del C:\temp\cds_cmd.bat
cds_cmd.bat 由 cds.exe 生成
我真的很想知道是否有任何其他方法可以在不使用 bat 文件的情况下做到这一点。
我找到并阅读了Is there any way to change directory using C language?,但没有找到我要找的东西。
【问题讨论】:
-
在您已链接到的问题上查看已接受答案的 cmets - 他们解释了为什么您不能这样做。
-
您可以通过在 C .exe 中设置诸如 CD_PATH 之类的环境变量将其缩减为一个批处理文件,然后将
cds_cmd.bat替换为cd %CD_PATH% -
谢谢 Fuzzy,这将是一个比我目前拥有的解决方案更好的解决方案,但它似乎有一个类似于我原来的问题 stackoverflow.com/questions/3416638/…
-
我还没有尝试过,但我想知道你是否可以让你的 C prog 调用另一个旨在设置环境的批处理文件。变种。使用 SetX? (stackoverflow.com/questions/3803581/…) 即有一个
setvar.bat包含类似setx %1=%2的东西,你的C prog 会默默地调用CD_PATH和C:\somepath作为参数?值得玩吗? :) -
另外,我以前使用的一个技巧是在批处理文件运行时重写它:) ....我的批处理文件称为 Turbo Pascal prog,它重写了同一个批处理文件,因为它被 DOS 解释了一半,并且 pascal .com 添加了它需要添加的内容。如果新批次的大小与旧批次的大小不同到需要获取下一行的程度,DOS 会有点不高兴,因此诀窍是填充内容,以便相同的命令始终在同一个地方.最后效果很好!
标签: c batch-file directory executable