• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bestansnamen inlezen en wijzigen

Status
Niet open voor verdere reacties.

Wiljan660

Gebruiker
Lid geworden
22 jan 2018
Berichten
7
Hallo,

Ik wil graag van een map met een x-aantal submappen een bestandsnamen lijst maken, liefst alleen de bestandnamen met een specifiek iets in de bestandsnaam.
Vervolgens bestandnamen wijzigen en weer terug zetten.

Wie heeft er een idee?

Gr. Wiljan
 
Laatst bewerkt:
Ik heb wel een idee.

Vertel? Ik heb wel via CMD een .csv bestand kunnen maken alleen dan niet met specifiek een bepaald stukje uit de bestandsnaam.
Dit is een voor beeld van de bestands naam: 1591 - 084, ligtenberg-rietberg, mw, 20180115 er staan alleen meerdere soorten in en moet alleen degene hebben met 084 erin.
 
Laatst bewerkt:
Ik heb geen glazen bol helaas. Dus of mijn idee aansluit kan ik je niet vertellen.

Goed gebruik is om een vraag te vergezellen van een representatief voorbeeldbestand (Excel).
 
Het idee staat er toch:
-- een voorbeeldbestandje zegt meer dan 1000 woorden --

Ik begrijp in ieder geval niets van post 1 en 3. Zal mij benieuwen of er mensen zijn die het wel begrijpen.
 
Bestanden maken doe je niet met CMD maar met een opdracht in het CMD scherm.
Daar heb je dus niet de bestanden gefilterd met *084*.
 
Hoi,

Als ik een voorbeeld bestand had gehad kon ik het andere ook wel maken.

Zal proberen mijn vraag beter uit te leggen, ik heb een map met veel onderliggende mappen met een x aantal bestanden erin. Nu wil ik deze graag de bestandsnamen ergens naar toe exporteren om ze te makkelijk te kunnen wijzingen en vervolgens te kunnen vervangen. zodat alle bestanden de juiste naam hebben om ingelezen te kunnen worden in een software programma. Ze moeten dan een juiste naam volgorde hebben. en geen dubbele nummers/namen.
 
Dan maak je daar toch dit van?
Code:
dir /b /s *084*.3dm >lijst.cvs
 
Dan maak je daar toch dit van?
Code:
dir /b /s *084*.3dm >lijst.cvs

oke, en hoe krijg ik dan alleen de bestandsnamen? heb nu namelijk ook het hele pad erbij.
En kan ik ze dan wijzigen in excel en terug zetten?
 
Omdat je /s gebruikt krijg je altijd het hele pad erbij.

Maar dat zal je ook nodig hebben in Excel als je namen wilt wijzigen om dat daarna via VBA op schijf door te voeren.
Plaats dus zoals al eerder gevraagd dat bestand.
 
Omdat je /s gebruikt krijg je altijd het hele pad erbij.

Maar dat zal je ook nodig hebben in Excel als je namen wilt wijzigen om dat daarna via VBA op schijf door te voeren.
Plaats dus zoals al eerder gevraagd dat bestand.

Sorry maar ik ben zoals je wel merkt hier zeer onervaren, maar hoe plaats ik een bestand en de hele map lijkt me toch niet nodig? die is 859 MB en 1792 bestanden groot 366 mappen.
 
Dat wordt ook niet bedoeld, alleen dat .csv bestand.
Klik op Ga geavanceerd en dan op de paperclip.
 
Lees je wel eens een krant ?

Verwijder dat bestand met al die privacygevoelige gegevens !:evil:
 
Je wilt de bestandsnamen hernoemen?

Onderstaande code maakt eerst een nieuwe map aan op de C-schijf dat een kopie is van het origineel.
In die map worden de bestandsnamen gewijzigd.

De originele map waar de csv's in staan heb ik 'Test1' benoemd in de code.
De kopie gaat 'testmap' heten.
De bestanden krijgen een opvolgend nummer.

Code:
Sub hsv()
Dim sq, arr, OldName, NewName, sPath As String, sFile As String, y As Long, i As Long
Application.ScreenUpdating = False


'Kopieer de bestanden van map Test1 naar Map "testmap"


CreateObject("shell.application").Namespace("C:\users\Wiljan\documents").newfolder "testmap"
sq = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Users\Wiljan\documents\Test1\*.csv""/o:n /b").stdout.readall, vbCrLf)
   For i = 0 To UBound(sq) - 1
    CreateObject("scripting.filesystemobject").CopyFile "c:\users\Wiljan\documents\Test1\" & sq(i), "c:\users\Wiljan\documents\testmap\"
   Next i


'Hernoem de bestanden in de testmap


sPath = "C:\users\Wiljan\documents\testmap\"
sFile = "*084*"
 For Each arr In Split(CreateObject("wscript.shell").exec("cmd /c Dir " & sPath & sFile & " /b").stdout.readall, vbCrLf)
   If arr <> "" Then
     OldName = sPath & arr
     NewName = sPath & y + 1 & ".csv"
     Name OldName As NewName
    y = y + 1
  End If
 Next arr
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan