野火论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始


查看: 13089|回复: 16

[已解决] 如何将文件名中下划线变成小数点?

[复制链接]

11

主题

100

回帖

2

威望

助工

Rank: 2

积分
142
发表于 2021-6-13 17:35 | 显示全部楼层 |阅读模式
creo文件名称不能使用小数点,一般都使用下划线“_”代替,读取文件名信息时候,有没有函数式能把下划线“_”转化成小数点“.”。

3

主题

893

回帖

16

威望

讲师

Rank: 6Rank: 6

积分
1068
发表于 2021-6-13 17:39 | 显示全部楼层
这个问题太深奥了。。。。
回复 支持 反对

使用道具 举报

2

主题

294

回帖

22

威望

工程师

Rank: 3Rank: 3

积分
472
发表于 2021-6-13 20:57 | 显示全部楼层
你举几个文件名例子,可能用简单的批处理就可以搞定。
回复 支持 反对

使用道具 举报

1

主题

893

回帖

63

威望

讲师

Rank: 6Rank: 6

积分
1619

希望之星勋章

发表于 2021-6-13 21:09 | 显示全部楼层
可以用编程软件编个小程序的。以下两个VB代码整合一下应该就可以。估计现在都用python了吧。由于自己当前电脑未装VS,没法整合并验证。

提取字符串并将其中"_"改成"."。
Module Module1
    Sub Main()
        Dim name As String = "123_456"
        Dim i As Long
        Dim j As Integer = Len(name)
        Dim nname(j) As String
        For i = 1 To j - 1
            nname(i) = Mid(name, i, 1)
            If nname(i) = "_" Then
                nname(i) = "."
            End If
        Next i
        Dim m As Long
        Dim str As String = ""
        For m = 1 To j - 1
            str = str & nname(m)
        Next m
        Console.WriteLine(str)
        Console.ReadLine()
    End Sub
End Module

输入文件夹路径并将其中所有文件在原名称后加三位的编号
Imports System
Imports System.IO
Module Module1
Sub Main()
Console.WriteLine("请输入文件路径(路径结尾加\):")
Dim path As String = Console.ReadLine()
Dim dirs As String() = Directory.GetFiles(path, "*")
Console.WriteLine("总文件数{0}个", dirs.Length)
Dim i As Integer = 0
For Each dir As String In dirs
Dim name As String = System.IO.Path.GetFileName(dir)
Dim exte As String = System.IO.Path.GetExtension(dir)
Dim oname As String = Left(name, Len(name) - 4)
Dim oldname As String = dirs(i)
Dim newname As String = path + oname + Format(i + 1, "000") + exte
Rename(oldname, newname)
Console.WriteLine(oldname & "====>" & newname)
i += 1
Next
Console.ReadLine()
End Sub
End Module

评分

参与人数 1威望 +1 收起 理由
野火 + 1 热心助人

查看全部评分

回复 支持 反对

使用道具 举报

11

主题

100

回帖

2

威望

助工

Rank: 2

积分
142
 楼主| 发表于 2021-6-13 21:58 | 显示全部楼层
暗菩提 发表于 2021-6-13 21:09
可以用编程软件编个小程序的。以下两个VB代码整合一下应该就可以。估计现在都用python了吧。由于自己当前电 ...

谢谢啦,学习一下
回复 支持 反对

使用道具 举报

11

主题

135

回帖

3

威望

助工

Rank: 2

积分
172
发表于 2021-6-15 09:00 | 显示全部楼层
顶起来,期待二次开发大神来个小插件,不只是.,还有空格,神烦
回复 支持 反对

使用道具 举报

136

主题

1900

回帖

453

威望

教授

Rank: 8Rank: 8

积分
3296

热心助人勋章优秀会员勋章希望之星勋章嘉宾勋章

QQ
发表于 2021-6-15 11:31 | 显示全部楼层
Creo文件名不能用“.”,我们都是在模板里加好关系式,转换文件名为图号名:例如文件名GG_01   ,图号名就是GG.01



CINDEX=REL_MODEL_NAME
ORITEXT = "_"
IF SEARCH(CINDEX,ORITEXT)>1
TMP=EXTRACT(CINDEX,1,SEARCH(CINDEX,ORITEXT)-1)
CINDEX=TMP+"." +  EXTRACT(CINDEX,SEARCH(CINDEX,ORITEXT)+1,STRING_LENGTH(CINDEX)\
-SEARCH(CINDEX,ORITEXT))
ENDIF
IF SEARCH(CINDEX,ORITEXT)>1
TMP=EXTRACT(CINDEX,1,SEARCH(CINDEX,ORITEXT)-1)
CINDEX=TMP + "." +  EXTRACT(CINDEX,SEARCH(CINDEX,ORITEXT)+1,STRING_LENGTH(\
CINDEX)-SEARCH(CINDEX,ORITEXT))
ENDIF
IF SEARCH(CINDEX,ORITEXT)>1
TMP=EXTRACT(CINDEX,1,SEARCH(CINDEX,ORITEXT)-1)
CINDEX=TMP + "."+  EXTRACT(CINDEX,SEARCH(CINDEX,ORITEXT)+1,STRING_LENGTH(\
CINDEX)-SEARCH(CINDEX,ORITEXT))
ENDIF
IF SEARCH(CINDEX,ORITEXT)>1
TMP=EXTRACT(CINDEX,1,SEARCH(CINDEX,ORITEXT)-1)
CINDEX=TMP + "." +  EXTRACT(CINDEX,SEARCH(CINDEX,ORITEXT)+1,STRING_LENGTH(\
CINDEX)-SEARCH(CINDEX,ORITEXT))
ENDIF
IF SEARCH(CINDEX,ORITEXT)>1
TMP=EXTRACT(CINDEX,1,SEARCH(CINDEX,ORITEXT)-1)
CINDEX=TMP + "."+  EXTRACT(CINDEX,SEARCH(CINDEX,ORITEXT)+1,STRING_LENGTH(\
CINDEX)-SEARCH(CINDEX,ORITEXT))
ENDIF
IF SEARCH(CINDEX,ORITEXT)>1
TMP=EXTRACT(CINDEX,1,SEARCH(CINDEX,ORITEXT)-1)
CINDEX=TMP + "." +  EXTRACT(CINDEX,SEARCH(CINDEX,ORITEXT)+1,STRING_LENGTH(\
CINDEX)-SEARCH(CINDEX,ORITEXT))
ENDIF



评分

参与人数 1威望 +1 收起 理由
野火 + 1 热心助人

查看全部评分

回复 支持 反对

使用道具 举报

3

主题

137

回帖

5

威望

工程师

Rank: 3Rank: 3

积分
221
发表于 2021-6-15 14:05 | 显示全部楼层
BBB1=string_length(AAAA)
BBB2=search(AAAA,"_")
if BBB2>0
BBB3=BBB2-1
BBB4=BBB2+1
BBB5=BBB1-BBB2
AAAA0=extract(AAAA,1,BBB3)
AAAA2=extract(AAAA,BBB4,BBB5)
else
AAAA0=AAAA
endif
Filename=rel_model_name()      
Strlen=string_length(Filename)
Strlen1=search(Filename,"_")
if Strlen1 == 0
else
    Strlen2=Strlen1-1
    Strlen3=Strlen1+1
    Strlen4=Strlen-Strlen1
    E2=extract(Filename,1,Strlen2)
    E3=extract(Filename,Strlen3,Strlen4)
    E0=E2+"."+E3
    Filename=E0
    Strlen1=search(Filename,"_")
endif
if Strlen1 != 0
    Strlen2=Strlen1-1
    Strlen3=Strlen1+1
    Strlen4=Strlen-Strlen1
    E2=extract(Filename,1,Strlen2)
    E3=extract(Filename,Strlen3,Strlen4)
    E0=E2+"."+E3
    Filename=E0
   Strlen1=search(Filename,"_")
endif
if Strlen1 != 0
    Strlen2=Strlen1-1
    Strlen3=Strlen1+1
    Strlen4=Strlen-Strlen1
    E2=extract(Filename,1,Strlen2)
    E3=extract(Filename,Strlen3,Strlen4)
    E0=E2+"."+E3
    Filename=E0
endif

简化版,只识别3位_

评分

参与人数 1威望 +1 收起 理由
野火 + 1 热心助人

查看全部评分

回复 支持 反对

使用道具 举报

1

主题

893

回帖

63

威望

讲师

Rank: 6Rank: 6

积分
1619

希望之星勋章

发表于 2021-6-15 15:26 | 显示全部楼层
fuguangyi 发表于 2021-6-15 11:31
Creo文件名不能用“.”,我们都是在模板里加好关系式,转换文件名为图号名:例如文件名GG_01   ,图号名就 ...

这个方法nice,感谢大神指点,谢谢!
回复 支持 反对

使用道具 举报

1

主题

154

回帖

1

威望

工程师

Rank: 3Rank: 3

积分
204
发表于 2021-6-16 15:54 | 显示全部楼层
学习VBA代码,感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站为非营利性站点,部分资源为网友搜集或发布,仅供学习和研究使用,如用于商业用途,请购买正版。站内所发布的资源,如有侵犯你的权益,请联系我们,本站将立即改正或删除。

QQ|手机版|小黑屋|野火论坛(©2007~2024) ( 苏ICP备11036728号-2 )苏公网安备 32039102000103号

GMT+8, 2024-4-20 14:19 , Processed in 0.106496 second(s), 32 queries .

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