bat调用全路径包含空格的exe程序

点击网页按钮事件,获取相应参数并传递给本地待调用的exe程序,我们采用的方式是在注册表中定义自己的协议,该自定义协议指明需要调用的应用程序,但由于参数要传递多个,没法直接调用,于是我们又写了一个bat文件,在注册表中指明要调用的bat,在bat中处理参数并调用相应的exe,碰到的第一个问题就是上篇小结中提到的bat调用相对路径时,应用程序上方图标不显示的问题,后来加了全路径好了,但如果全路径包含空格,bat处理又有问题,我们的处理方式是:

set toolPathTemp="%~dp0" ::当前路径加上"",不加""bat直接退出了
    set toolPath=!toolPathTemp:"=! ::去除空格,用!!引用变量需要在加上setlocal\

enabledelayedexpansion

start /d "path" "" "path+exe" !1! !2! ::/d指明exe所在全路径,后面的""是为了让path中可包含空格,参考http://www.cnblogs.com/qq78292959/p/3524095.html

另:传递的参数可能包含中文,但到bat中会乱码,所有我们又写了一个转utf-8应用程序返回中文,但在bat中需要得到应用程序的结果,不是很好处理,请参考http://zhidao.baidu.com/link?url=q10bC75zSEavvxpJ3RGdwAzw5Y0rfDCpskI92yv4jJ4TUU9ujAZLXEoMWiovwuqrnhg391m2SGQ-OxkA3MY8C_,我们的处理方式相同,只不过exe路径中包含变量,如下:

for /f "" %%i in (‘"!toolPath!encode.exe" !name!‘) do (

set name=%%i

)

时间: 2024-12-19 20:24:19

bat调用全路径包含空格的exe程序的相关文章

[转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提示符执行这段指令时(测试Start命令执行带空格的路径的程序或文件问题),第一行Start会成功执行,跳出记事本程序,而第二行,会 Start跳出一个新的命令提示符,标题上写着路径,但是不会执行任何命令,第三行Start命令行提示符会提示C:\Program文件不存在,提示无 法执行. start

Windows10 cd 包含空格的路径出错

给路径名上加上" "(两个双引号). 参考资料 关于cmd中执行命令路径包含空格的解决办法

Windows编程 - 启动可执行(exe)程序 代码(C++)

启动可执行(exe)程序 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 通过输入程序位置启动可执行(exe)程序, 使用windows的CreateProcess()函数, 即可. 示例是调用预先生产的可执行(exe)程序. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <

获取指定进程所对应的可执行(EXE)文件全路径(代码)

1 #include "Psapi.h" 2 #pragma comment(lib, "Psapi.lib ")//需要包含头文件哦! 1 /* 功 能:获取指定进程所对应的可执行(EXE)文件全路径 2 * 参 数:hProcess - 进程句柄.必须具有PROCESS_QUERY_INFORMATION 或者 3 PROCESS_QUERY_LIMITED_INFORMATION 权限 4 * sFilePath - 进程句柄hProcess所对应的可执行文件

windows下调用外部exe程序 SHELLEXECUTEINFO

本文主要介绍两种在windows下调用外部exe程序的方法: 1.使用SHELLEXECUTEINFO 和 ShellExecuteEx SHELLEXECUTEINFO 结构体的定义如下: 1 typedef struct _SHELLEXECUTEINFO { 2 DWORD cbSize; 3 ULONG fMask; 4 HWND hwnd; 5 LPCTSTR lpVerb; 6 LPCTSTR lpFile; 7 LPCTSTR lpParameters; 8 LPCTSTR lpD

C#调用Exe程序示例

在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法.在C#中,通过Process类来进行进程操作. Process类在System.Diagnostics包中. 示例一 using System.Diagnostics; Process p = Process.Start("notepad.exe"); p.WaitForExit();//关键,等待外部程序退出后才能往下执行 通过上述代码可以调用记事本程序,注意如果不是调用系统程序,则需要输入全路径. 示

关于使用 ProcessStartInfo 类时的文件目录包含空格问题的解决方法

前段时间项目中使用7-zip压缩生成EPUB文件(2.01),但通过 EPUB-Checker.exe 软件检测发现 mimetype 文件不是第一个归档文件,经过对比怀疑7z中有自己默认的归档顺序,遂改用 winrar.exe 进行压缩(项目采用C#编写,通过CMD执行压缩命令),压缩步骤为: 1.压缩 mimetype 文件,命令: "C:\Program Files\WinRAR\winrar.exe"  a -ep1 C:\Users\Administrator\AppData

DLL编写与调用全解

DELPHI学习   2008-12-23 22:52   阅读8   评论0 字号: 大  中  小 第一章 为什么要使用动态链接库(DLL) top 提起DLL您一定不会陌生,在Windows中有着大量的以DLL为后缀的文件,它们是保证Windows正常运行和维护升级的重要保证.(举个例子,笔者的Win95 System目录下尽有500多个DLL文件.)其实,DLL是一种特殊的可执行文件.说它特殊主要是因为一般它都不能直接运行,需要宿主程序比如*.EXE程序或其他DLL的动态调用才能够使用.

使用java代码调用exe程序 (包括参数传递)

使用Java代码调用exe 1使用场景 我现在使用eclipse+tomcat的架构建立了web server, 在这个web project中我需要建立一个定时任务,在定时任务中执行本地的一个C#工程生成的exe. 2Java代码 public class MyTask extends TimerTask { public void run() { System.out.println("call at " + (new Date())); // TODO æ­¤å¤?æ·»å? å