本帖最后由 andy8496 于 2018-10-6 10:41 编辑  
 
VS2012+IVF2015 
因为要在Fortran中用到批处理的功能,所以考虑用system及systemqq将批处理代码写到Fortran中。以下批处理代码可以获取快捷方式  “D:\LL\桌面\搜狗高速浏览器.lnk”  的目标,并写入文本 t.txt: 
 
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode for /f "skip=3 delims=" %%a in ('find ":\" "D:\LL\桌面\搜狗高速浏览器.lnk" ') do echo %%a > t.txt 
 
在 t.txt中获取的目标为: C:\Program Files (x86)\sougou\SogouExplorer\SogouExplorer.exe  
 
但是,当时将这一句写入Fortran中的时候,一直不能成功: 
 
 
[Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode program main
USE IFPORT
implicit none
integer :: i
 ! i=system('for /f "skip=3 delims=" %%a in ('find ":\" "D:\LL\桌面\搜狗高速浏览器.lnk" ') do echo %%a > t.txt') ! 编译失败
 ! i=system('for /f ""skip=3 delims="" %%a in ('find "":\"" ""D:\LL\桌面\搜狗高速浏览器.lnk"" ') do echo %%a > t.txt') ! 运行失败 
  i=system("for /f ""skip=3 delims="" %%a in ('find "":\"" ""D:\LL\桌面\搜狗高速浏览器.lnk"" ') do echo %%a > t.txt") ! 运行失败
  stop 
end program 
 
另外,system的参数能否包含字符串?比如这样可否: 
 
[Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode program main
USE IFPORT
implicit none
integer :: i
character :: s_lnk*256
s_lnk = "D:\LL\桌面\搜狗高速浏览器.lnk"
  i=system("for /f ""skip=3 delims="" %%a in ('find "":\"" """// trim(s_lnk)  //""" ') do echo %%a > t.txt") 
 write(*,*) "for /f ""skip=3 delims="" %%a in ('find "":\"" """// trim(s_lnk)  //""" ') do echo %%a > t.txt" 
 ! 此时write得到的字符串与写在.bat文件中能正常执行的代码一模一样!编译也没有问题,但是在system函数中就是不能运行。郁闷啊!!!
  stop 
end program 
 
还请大家不吝赐教! 
 
 
 
 
 
 |