【发布时间】:2016-06-01 14:25:00
【问题描述】:
我正在尝试在 vb.net 中运行一个批处理文件。这是我正在使用的命令:
System.Diagnostics.Process.Start("C:\Folder\convertTIF2PNG.bat")
批处理文件应该爬过它所在的文件夹并将所有 .tif 文件转换为 .png。当我调用该文件时,命令窗口会打开(所以我知道发生了一些事情),但是没有任何 .tif 文件被转换。当我简单地双击目录中的批处理文件时,它运行正常(所以我知道批处理文件没有问题)。为什么我的代码没有正确运行批处理文件? 这是批处理文件中的代码:
for /r %%a in (.) do (
pushd %%a
(
"C:\Program Files (x86)\IrfanView\i_view32.exe" *.tif /convert=*.png /transpcolor=(255,255,255)
erase /f/q *.tif
)
popd
)
【问题讨论】:
-
批处理文件如何引用TIF文件所在的目录?您需要将运行的目录视为默认目录。您可以将其添加为 ProcessStartInfo 的一部分。或者,只需在批处理文件中将任何文件夹引用设为绝对引用即可避免此问题。
-
@ManoDestra 感谢您的回复!我还是有点困惑。批处理文件通过在其父目录中搜索.tif 扩展名来引用TIF 文件所在的目录(即,如果它在C:\folder 中,则检查C:\folder)。以下是批处理文件中的代码:
for /r %%a in (.) do ( pushd %%a ( "C:\Program Files (x86)\IrfanView\i_view32.exe" *.tif /convert=*.png /transpcolor=(255,255,255) erase /f/q *.tif ) popd )如何避免该问题? -
您可以在批处理文件中明确声明 C:\Folder,以便找到文件的路径是绝对路径。否则,您将不得不修改 ProcessStartInfo 以便它知道该进程打算在 C:\Folder 中启动,以便您的批处理文件可以工作。如果您尝试从不是 C:\Folder 的目录运行批处理文件,那么您会看到它以与 VB.Net 相同的方式失败。
-
好的,感谢您的帮助!
标签: vb.net batch-file batch-processing