【问题标题】:Rename some files present in the folder with other filename that is present in other folder in VBscript用VBscript中其他文件夹中存在的其他文件名重命名文件夹中存在的某些文件
【发布时间】:2022-01-10 21:59:59
【问题描述】:

我有一个文件夹 1,其中有两个名为“Head.csv”和“Col.csv”的 CSV 文件。我想重命名文件夹 1 中存在的所有 CSV 文件。我想添加到每个 CSV 文件的后缀是文件夹 2 中存在的另一个文件名。

文件名 1 = 我要重命名的实际 CSV 文件 文件名 2 = 想要将此文件名添加为后缀。此文件存在于其他文件夹中。

文件名的输出:Filename1 + _ + FileName2 + .csv

以文件夹 1 中存在“Head.csv”和“Col.csv”为例,而在文件夹 2 中,文件名为 general.txt。文件夹 2 中的文件名可以是任意名称。

例如:- Head_general.csv

Option Explicit

Dim ofso, ofolder1,ofolder2,objFile, folderName1,folderName2 
Dim File,sNewFile,a

folderName1 = "C:\Users\ShantanuGupta\Desktop\DRUM\Folder1"  ' .csv file
folderName2 = "C:\Users\ShantanuGupta\Desktop\DRUM\Folder2" ' .txt file with different filename

Set ofso = CreateObject("Scripting.FileSystemObject")  
Set ofolder1 = ofso.GetFolder(folderName1)
Set ofolder2 = ofso.GetFolder(folderName2)
Set objFile  = oFolder2.Files 
filesuffix = ofso.GetBaseName(oFolder2.Files)

For Each File In oFolder1.Files
     sNewFile = File.Name       
     If instr(sNewfile, "Head.csv") > 0 THEN
        File.Name = Replace(File.Name, "Head.csv", "Head_" & filesuffix & ".csv")       
     End If
     If instr(sNewfile, "Col.csv") > 0 THEN
        File.Name = Replace(File.Name, "Col.csv", "Col_" & filesuffix & ".csv")
     End If
 Next

类型不匹配“GetBaseName”导致错误。

有什么帮助???

附件Here

【问题讨论】:

  • oFolder2.Files返回一个集合,即使只有一个文件,也需要对集合进行迭代获取每个文件。
  • @flakes 如果我迭代那么我如何将该后缀添加到文件中。
  • 即使迭代,也只有一个文件,不会被覆盖。 For each objFile in oFolder2.Files : filesuffix = ofso.GetBaseName(objFile) : Next
  • 您只需将filesuffix = ofso.GetBaseName(oFolder2.Files) 行替换为上述内容即可。

标签: csv vbscript rename


【解决方案1】:

这可能有效,虽然我不完全确定“文件夹 2”中有多少文件,但你明白了:

Option Explicit

Dim objFile, sNewFile, filesuffix

Dim folderName1 : folderName1 = "C:\Users\ShantanuGupta\Desktop\DRUM\Folder1"
Dim folderName2 : folderName2 = "C:\Users\ShantanuGupta\Desktop\DRUM\Folder2"

Dim ofso : Set ofso = CreateObject("Scripting.FileSystemObject")  
Dim ofolder1 : Set ofolder1 = ofso.GetFolder(folderName1)
Dim ofolder2 : Set ofolder2 = ofso.GetFolder(folderName2)

For Each objFile in ofolder2.Files
    filesuffix = ofso.GetBaseName(objFile)
Next

For Each objFile In oFolder1.Files
     sNewFile = ofso.GetBaseName(objFile.Name)   
     
     If StrComp(sNewfile,"Head",1) = 0 THEN
        objFile.Name = Replace(sNewFile, sNewFile, sNewFile & "_" & filesuffix & ".csv")        
     End If
     If StrComp(sNewfile,"Col",1) = 0 THEN
        objFile.Name = Replace(sNewFile, sNewFile, sNewFile & "_" & filesuffix & ".csv")
     End If
Next
 
Set ofolder1 = Nothing
Set ofolder2 = Nothing
Set ofso = Nothing

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2016-07-24
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2016-02-05
    • 2017-04-20
    相关资源
    最近更新 更多