在@userprofiledir目录中执行sed.exe ,无任何响应,请各位帮忙看看。- [已解决]
本帖最后由 linmi 于 2011-2-15 07:26 编辑$art_files_path = IniRead(@UserProfileDir & "\setting.ini", "location", "path", "NotFound")
$art_temp_path = IniRead(@UserProfileDir & "\setting.ini", "location", "path", "NotFound") & "\temp" & @MDAY
if FileExists($art_temp_path) Then
DirRemove($art_temp_path,1)
DirCreate($art_temp_path)
Else
DirCreate($art_temp_path)
EndIf
$message = "按 Ctrl or Shift 键 可多选 ."
$select_art_files = FileOpenDialog($message, IniRead(@UserProfileDir & "\setting.ini", "location", "path", "NotFound") & "\", "Art文件 (*.art)", 1 + 4 )
If @error Then
MsgBox(4096,"","无文件")
;-----------------------------------------------------------------------------------
Else
$files = StringSplit($select_art_files,"|")
If $files > 1 Then
For $k = 2 To $files
$art_full_path = $files & "\" & $files[$k];源文件的真实路径
FileCopy($art_full_path,$art_temp_path) ;拷贝文件至临时目录
FileSetAttrib ($art_temp_path & "\" & $files[$k] , "-R") ;去除ART文件的只读属性
$file_name = $art_temp_path & "\" & $files[$k]
$software_sed = @UserProfileDir & "\tools\sed.exe"
;取消空行
RunWait(@ComSpec & " /c " & '"' & $software_sed & '"' & " -e ""/^ *$/d"" "& $file_name & " > " & $art_temp_path & "\art_temp.rtf","",@SW_HIDE)
Next
EndIf
EndIfRunWait(@ComSpec & " /c " & '"' & $software_sed & '"' & " -e ""/^ *$/d"" "& $file_name & " > " & $art_temp_path & "\art_temp.rtf","",@SW_HIDE)<----- 在@userprofiledir目录下执行sed.exe,则无任何反应。将sed.exe放至路径中不带空格的目录中则正常。我也尝试用“”将路径括起来,但均无反应。请各位高手帮我指正一下上面的程序到底是哪里出错了。 谢谢! 难道这是@USERPROFILE的BUG吗?有谁碰到过类似的情况啊。 用'"' 括起两边应该可以的。。。可能你没写对 我尝试过加括号和不加括号两种方法,但都不行。
RunWait(@ComSpec & " /c " & '"' & $software_sed & '"' & " -e ""/^ *$/d"" "& $file_name & " > " & $art_temp_path & "\art_temp.rtf","",@SW_HIDE)
此句中我已经用上括号(红色部分字符)了。
如果知道怎么写的,请告诉我一声,谢谢!^_^ 建议把里面的变量一个一个的MsgBox出来,再组合到一块,看路径是否正确. 还要试试加工作目录 cmd下只认 " , 不认 ' .AU3则可以都认到。试下下面的代码
Run(@ComSpec & ' /k ' & 'dir /b/s ' & '"' & @StartMenuCommonDir & '"', '', @SW_SHOW)
@StartMenuCommonDir = C:\Documents and Settings\All Users\「开始」菜单 在一个命令行里混用单引号、双引号和双双引号。。。头晕了。。。
RunWait(@ComSpec & ' /c "' & $software_sed & '" -e "/^ *$/d" "' & $file_name & '" > "' & $art_temp_path & '\art_temp.rtf"', "", @SW_HIDE)
试试吧。
在cmd下,如果路径包含空格,一定要使用双引号"。 本帖最后由 linmi 于 2009-8-25 22:26 编辑
:face (36):太感谢各位了。
近来较忙,都没时间上来看看。真不好意思。
前面路径变量等都没问题的。已经测试过的。
问题主要就出在路径中含有空格上。
其实,' " ' 这个不是双“号来的。是‘ ” ’来的。主要是起反定义用的。 在一个命令行里混用单引号、双引号和双双引号。。。头晕了。。。
RunWait(@ComSpec & ' /c "' & $software_sed & '" -e "/^ *$/d" "' & $file_name & '" > "' & $art_temp_path & '\art_temp.rtf"', "", @SW_HIDE)
...
sensel 发表于 2009-8-22 11:50 http://autoitx.com/images/common/back.gif
" /c " 是要用双引号的。
所以,上面的命令还是执行不了的。
谢谢这位兄弟。 cmd下只认 " , 不认 ' .AU3则可以都认到。试下下面的代码
Run(@ComSpec & ' /k ' & 'dir /b/s ' & '"' & @StartMenuCommonDir & '"', '', @SW_SHOW)
@StartMenuCommonDir = C:\Documents and Settings\All Users\「 ...
bing614 发表于 2009-8-22 06:12 http://autoitx.com/images/common/back.gif
执行DOS命令是没问题。但执行SED时却是不行的。
谢谢! 本帖最后由 linmi 于 2011-2-15 07:22 编辑
{:face (125):}可以支持含有空格的路径了,终于可以结贴了。RunWait(@ComSpec & ' /c ' & '"' & $software_sed & " -e ""/^ *$/d"" "& $file_name & " > " &'"'& $rep_temp_path & "\rep_temp.rtf" &'"'& '"',"",@SW_HIDE)谢谢各位XDJM的支持和帮忙!
页:
[1]