linmi 发表于 2009-8-18 14:17:12

在@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放至路径中不带空格的目录中则正常。我也尝试用“”将路径括起来,但均无反应。请各位高手帮我指正一下上面的程序到底是哪里出错了。 谢谢!

linmi 发表于 2009-8-19 21:54:43

难道这是@USERPROFILE的BUG吗?有谁碰到过类似的情况啊。

AUFS 发表于 2009-8-19 23:17:16

用'"' 括起两边应该可以的。。。可能你没写对

linmi 发表于 2009-8-21 21:27:37

我尝试过加括号和不加括号两种方法,但都不行。
RunWait(@ComSpec & " /c " & '"' & $software_sed & '"' & " -e ""/^ *$/d"" "& $file_name & " > " & $art_temp_path & "\art_temp.rtf","",@SW_HIDE)
此句中我已经用上括号(红色部分字符)了。
如果知道怎么写的,请告诉我一声,谢谢!^_^

iftodo 发表于 2009-8-21 21:50:24

建议把里面的变量一个一个的MsgBox出来,再组合到一块,看路径是否正确.

afan 发表于 2009-8-21 22:33:41

还要试试加工作目录

bing614 发表于 2009-8-22 06:12:36

cmd下只认 " , 不认 ' .AU3则可以都认到。试下下面的代码
Run(@ComSpec & ' /k ' & 'dir /b/s ' & '"' & @StartMenuCommonDir & '"', '', @SW_SHOW)
@StartMenuCommonDir = C:\Documents and Settings\All Users\「开始」菜单

sensel 发表于 2009-8-22 11:50:15

在一个命令行里混用单引号、双引号和双双引号。。。头晕了。。。
RunWait(@ComSpec & ' /c "' & $software_sed & '" -e "/^ *$/d" "' & $file_name & '" > "' & $art_temp_path & '\art_temp.rtf"', "", @SW_HIDE)
试试吧。
在cmd下,如果路径包含空格,一定要使用双引号"。

linmi 发表于 2009-8-25 22:23:21

本帖最后由 linmi 于 2009-8-25 22:26 编辑

:face (36):太感谢各位了。
近来较忙,都没时间上来看看。真不好意思。
前面路径变量等都没问题的。已经测试过的。
问题主要就出在路径中含有空格上。
其实,' " ' 这个不是双“号来的。是‘ ” ’来的。主要是起反定义用的。

linmi 发表于 2009-8-27 16:43:00

在一个命令行里混用单引号、双引号和双双引号。。。头晕了。。。
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 " 是要用双引号的。
所以,上面的命令还是执行不了的。

谢谢这位兄弟。

linmi 发表于 2009-8-27 16:44:25

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 发表于 2009-9-4 09:07:02

本帖最后由 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]
查看完整版本: 在@userprofiledir目录中执行sed.exe ,无任何响应,请各位帮忙看看。- [已解决]