【问题标题】:Cant start *.exe with *.bat file, yet it will start if command is run from CMD directly无法使用 *.bat 文件启动 *.exe,但如果直接从 CMD 运行命令,它将启动
【发布时间】:2014-11-16 18:03:43
【问题描述】:

我有一个脚本可以关闭一个名为 ncat.exe 的进程,然后重新打开它,或者至少我希望它这样做,但是当我运行 .bat 文件时它似乎不起作用。这是脚本的一部分:

TASKKILL /F /IM ncat.exe* /T >nul 2>nul
ping localhost -n 3 >nul
regedit /S c:\ncatprintingPuttyDefaults.reg
cd c:\
ncat_lpt1.exe
timeout /t 10 /nobreak >nul

这些不是开始 ncat_lpt1.exe 里面有这个脚本:

@ECHO OFF
cd c:\Program Files (x86)\Ncat
ncat.exe -l -k -p 5964 > lpt1

如果我转到 cmd 并手动输入,这会变得有趣吗

cd c:\
ncat_lpt1.exe

它立即运行没问题。因此,如果通过 bat 文件完成,则不会工作,但手动会。脑洞大开……

帮助?如果需要任何其他细节,请告诉我,我尽力解释得最好:)

【问题讨论】:

  • 它不能只是默默地不启动进程。一定有错误,或任何其他失败原因的痕迹。请提供这些。
  • 顺便说一句,您需要在 cd 路径周围加上引号。也许这就是原因。
  • 注意:替换cd c:` with pushd c:`;如果此人已经在 C 下的目录中,cd 只会转到 C 驱动器的根目录; pushd 将带你到 c:\ 根目录,无论从哪里调用。
  • @JohnBevan ---好的,所以我用这个创建了一个小脚本并且正在工作:(@echo off pushd c:\ ncat_lpt1.exe Pause)所以在我的主脚本中有些东西破坏了它跨度>
  • 也关注@akonsu 和@JohnLBevan:pushd "c:\Program Files (x86)\Ncat" 或者,不更改默认目录,您可以写"c:\Program Files (x86)\Ncat\ncat.exe" -l -k -p 5964

标签: windows batch-file cmd exe


【解决方案1】:
TASKKILL /F /IM ncat.exe* /T >nul 2>nul
ping localhost -n 3 >nul
regedit /S c:\ncatprintingPuttyDefaults.reg
cd c:\
CALL ncat_lpt1.BAT
timeout /t 10 /nobreak >nul

C:\ncat_lpt1.exe的名字改成ncat_lpt1.bat

(根据提示,ren C:\ncat_lpt1.exe ncat_lpt1.bat

@ECHO OFF
cd c:\Program Files (x86)\Ncat
ncat.exe -l -k -p 5964 > lpt1

Windows 使用文件名的扩展名来确定如何运行文件。您不能简单地用 .exe 扩展名命名批处理文件来执行它 - 它需要 .bat 扩展名。

【讨论】:

    猜你喜欢
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2012-10-07
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多