Fortran Coder

楼主: shrine
打印 上一主题 下一主题

[绘图界面库] 请问怎么获得包括子文件夹的所有文件名

[复制链接]

86

帖子

36

主题

0

精华

专家

F 币
352 元
贡献
221 点
16#
 楼主| 发表于 2017-9-13 18:22:13 | 只看该作者
本帖最后由 shrine 于 2017-9-13 18:34 编辑
kyra 发表于 2017-9-13 18:21
但是 GetShortFileName 可以实现这个目的。

我试了,把你贴的子程序用GetShortFileName代替
[Fortran] 纯文本查看 复制代码
Subroutine ToDoOneFile( cFile , iLoop )
  use Kernel32 , only : GetShortFileName
  use , intrinsic :: ISO_C_Binding
   Character( Len = * ) , Intent( IN ) :: cFile
   Integer , Intent( IN ) :: iLoop
   integer :: k
   !k=10
   character(len=512) :: sFile
   k = GetShortFileName ( trim(cFile)//c_null_char , sFile , len(sFile) ) 
   Write( * , * ) '第',iLoop,'个文件:', sFile(:k)
End Subroutine ToDoOneFile


错误                error #6580: Name in only-list does not exist.   [GETSHORTFILENAME]               


255

帖子

0

主题

0

精华

版主

World Analyser

F 币
699 元
贡献
502 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
15#
发表于 2017-9-13 18:21:08 | 只看该作者
但是 GetShortFileName 可以实现这个目的。

86

帖子

36

主题

0

精华

专家

F 币
352 元
贡献
221 点
14#
 楼主| 发表于 2017-9-13 18:09:12 | 只看该作者
本帖最后由 shrine 于 2017-9-13 18:11 编辑
kyra 发表于 2017-9-13 16:19
你是想获得短路径吧?

不妨试试 windows 提供的 GetShortFileName

不是,不是,
我是想把文件名改短一点,太长了拷贝到加密盘里不成功

文件很多,还有子文件夹

255

帖子

0

主题

0

精华

版主

World Analyser

F 币
699 元
贡献
502 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
13#
发表于 2017-9-13 16:19:58 | 只看该作者
你是想获得短路径吧?

不妨试试 windows 提供的 GetShortFileName

[Fortran] 纯文本查看 复制代码
Subroutine ToDoOneFile( cFile , iLoop )
  use Kernel32 , only : GetShortPathName
  use , intrinsic :: ISO_C_Binding
   Character( Len = * ) , Intent( IN ) :: cFile
   Integer , Intent( IN ) :: iLoop
   integer :: k
   character(len=512) :: sFile
   k = GetShortPathName( trim(cFile)//c_null_char , sFile , len(sFile) ) 
   Write( * , * ) '第',iLoop,'个文件:', sFile(:k)
End Subroutine ToDoOneFile

130

帖子

10

主题

0

精华

大师

F 币
617 元
贡献
372 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

12#
发表于 2017-9-13 14:20:08 | 只看该作者
CALL SYSTEM('DIR/S/D D:\ABC\DEF > filelist.txt')

OPEN(UNIT=11, FILE=filelist.txt')
...
CLOSE(UNIT=11, STATUS='DELETE')

to rename file: CALL SYSTEM('REN abcdef.dat abc.txt')

86

帖子

36

主题

0

精华

专家

F 币
352 元
贡献
221 点
11#
 楼主| 发表于 2017-9-13 13:06:55 | 只看该作者
kyra 发表于 2017-9-13 12:23
这中间涉及到很多问题,比如重名怎么办?
比如

重名就后面-1 -2 -3

中文可以略去

批处理怎么实现只取前十个字符,并且保留后缀?我网上搜了,包括使用楼上说的命令dir导出后然后做bat文件,觉得还是写个程序比较好,但是Fortran文件处理功能原来确实没有接触过

255

帖子

0

主题

0

精华

版主

World Analyser

F 币
699 元
贡献
502 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
10#
发表于 2017-9-13 12:23:25 | 只看该作者
这中间涉及到很多问题,比如重名怎么办?
比如

有2个文件,分别叫
1234567890123.txt
1234567890124.txt


还有中文字符怎么办?比如
我是1个中文文件名.txt

等等。

如果你只是重命名,我觉得批处理比较适合你。

86

帖子

36

主题

0

精华

专家

F 币
352 元
贡献
221 点
9#
 楼主| 发表于 2017-9-13 11:52:15 | 只看该作者
kyra 发表于 2017-9-13 10:36
callBack 是接口,ToDoOneFile 是它的真实实现。

[mw_shl_code=fortran,true]Program www_fcode_cn

感谢!!!

好人帮到底吧,想把每个文件重命名为前10个字符,低于十个字符文件名不变,后缀名不变该怎么弄

86

帖子

36

主题

0

精华

专家

F 币
352 元
贡献
221 点
8#
 楼主| 发表于 2017-9-13 11:17:47 | 只看该作者
pasuka 发表于 2017-9-13 11:12
Windows平台的话,调用dir命令并写入指定文件
dir /S/B > a.txt
具体参考下面的链接:

获得文件名后我还想进一步操作,所以编程比较方便

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

7#
发表于 2017-9-13 11:12:43 | 只看该作者
Windows平台的话,调用dir命令并写入指定文件
dir /S/B > a.txt
具体参考下面的链接:
http://blog.csdn.net/wubai250/article/details/7732822
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-18 20:26

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表