Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Scripting] Verplaatsen files gebaseerd op filename.*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit nu al 2 uur te vechten met dit scriptje, om de een of andere reden blijft hij melden dat het pad niet is gevonden op regel twaalf. Het pad dat dus eigenlijk door het script zelf gemaakt moet worden, ik zal wel ergens finaal naast zitten kijken maar ik weet het echt niet meer.

De bedoeling van het script is een map dit vol staat met orders te laten organiseren in mappen, inkoop, verkoop, jaar en maand. Dit is wat ik tot nu toe zelf heb gebouwd, maar ik ben niet zo heel ervaren (zeg maar helemaal niet :P ).

Ben op google soortgelijke scripts tegengekomen maar ik wil eigenlijk dit script werkend krijgen.

De opbouw van de bestandsnaam is: Inkoop R.YYYY.MM.DD.XXXX (waarbij de X staat voor een pakbonnummer dat niet van belang is voor het ordenen).

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Users\anita\Documents")

For Each objFile in objFolder.Files
    strFileName = Left(objFile.Name, 6)
    strMonth = (Mid(objFile.Name, 10, 4))    
    intYear = Mid(objFile.Name, 15, 2)
    
    strFolderPath = "C:\Users\anita\Documents\" & strFileName & "\" & intYear & "\" & strMonth & "\"

    If Not objFSO.FolderExists(strFolderPath) Then
        Set objFolder2 = objFSO.CreateFolder(strFolderPath)    
End If
  
    objFSO.MoveFile objFile.Path, strFolderPath

Next
wscript.quit


Ik zou graag weten wat ik fout gedaan heb.
Alvast bedankt voor jullie hulp!

  • Danot
  • Registratie: Juni 2003
  • Niet online
strFolderPath = "C:\Users\anita\Documents\" & strFileName & "\" & intYear & "\" & strMonth & "\"
Backslash vergeten?

  • Wimmel
  • Registratie: Februari 2001
  • Laatst online: 10:29

Wimmel

Hello

Je mist een backslash in regel 9

code:
1
strFolderPath = "C:\Users\anita\Documents\" & strFileName & "\" & intYear & "\" & strMonth & "\"

Men are from Mars, women are meteors crashing into Mars.
Discogs


Verwijderd

Topicstarter
Wimmel schreef op maandag 22 september 2008 @ 16:19:
Je mist een backslash in regel 9

code:
1
strFolderPath = "C:\Users\anita\Documents\" & strFileName & "\" & intYear & "\" & strMonth & "\"
Blijft een foutmelding geven in regel 12 teken 9, die backslash staat wel in mijn script, zal ik wel gewist hebben bij het typen of zo?

Ik kom net op ScriptGuy exact hetzelfde script tegen, met als verschil dat er MonthName gebruikt word achter het = teken bij strMonth. Als ik een pdf met de naam waarvoor dat script geschreven is pak en het niet aangepaste script gebruik krijg ik dezelfde foutmelding?

[ Voor 25% gewijzigd door Verwijderd op 22-09-2008 17:01 ]


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Douw d'r even een
Visual Basic:
1
MsgBox strFolderPath
tussen? :)

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Verwijderd

Topicstarter
alt-92 schreef op maandag 22 september 2008 @ 17:01:
Douw d'r even een
Visual Basic:
1
MsgBox strFolderPath
tussen? :)
Graag maar dan zul je me toch echt moeten helpen, waar? :X . Na dit "project" maar weer eens flink gaan lezen/leren. Nog goeie boeken voor VB en daarna evt C++/C#?

[ Voor 7% gewijzigd door Verwijderd op 22-09-2008 17:07 ]


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Users\anita\Documents")

For Each objFile in objFolder.Files
    strFileName = Left(objFile.Name, 6)
    strMonth = (Mid(objFile.Name, 10, 4))    
    intYear = Mid(objFile.Name, 15, 2)
    
    strFolderPath = "C:\Users\anita\Documents\" & strFileName & "\" & intYear & "\" & strMonth & "\"

'========================
'Dit lijkt me wel een leuke plek: voordat je iets doet met een waarde eerst terug echo'en
'zodat je ziet of je de juiste waarde krijgt.
'standaard debugging eigenlijk toch?
'=========================

MsgBox strFolderPath

'==========================


    If Not objFSO.FolderExists(strFolderPath) Then
        Set objFolder2 = objFSO.CreateFolder(strFolderPath)    
End If
  
    objFSO.MoveFile objFile.Path, strFolderPath

Next
wscript.quit

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 26-11 15:50
Gokje : Createfolder kan maximaal 1 folder "diep" creeren? Dus als de folder "inkoop" of de subfolder "intYear" nog niet bestaat, kan hij niet de subfolder "strMonth" aanmaken?

In dat geval moet je dus eerst de folder "inkoop" aanmaken, dan de subfolder met het jaar, en daarin weer de subfolder met de maand.

Whatever


Verwijderd

Topicstarter
Ok dit is wat ik nu heb (bijna letterlijke kopie van alt-92)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Users\anita\Documents\test")

For Each objFile in objFolder.Files
    strFileName = Left(objFile.Name, 6)
    strMonth = (Mid(objFile.Name, 15, 2))    
    intYear = Mid(objFile.Name, 10, 4)
    
    strFolderPath = "C:\Users\anita\Documents\test\docs\" & strFileName & "\" & intYear & "\" & strMonth & "\"

MsgBox strFolderPath

    If Not objFSO.FolderExists(strFolderPath) Then
        Set objFolder2 = objFSO.CreateFolder(strFolderPath)    
End If
  
    objFSO.MoveFile objFile.Path, strFolderPath

Next
wscript.quit


Nu geeft hij een foutmelding op regel 14 teken 9, ik snap er niets meer van, dit zou toch moeten werken. Hij echo'ed het correcte pad maar weigert vervolgens dit te maken. Misschien handig om te melden, ik zit momenteel op Vista te werken, weet niet of daar nog verschillen zijn ten opzichte van XP waar ik dagelijks mee werk.

Verwijderd

Topicstarter
DigiK-oz schreef op maandag 22 september 2008 @ 17:15:
Gokje : Createfolder kan maximaal 1 folder "diep" creeren? Dus als de folder "inkoop" of de subfolder "intYear" nog niet bestaat, kan hij niet de subfolder "strMonth" aanmaken?

In dat geval moet je dus eerst de folder "inkoop" aanmaken, dan de subfolder met het jaar, en daarin weer de subfolder met de maand.
Dat wist ik niet, ga ik meteen proberen, dus als ik nu de map inkoop zelf aanmaak, en daarin de map 2008 maak zou het moeten werken?

  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 26-11 15:50
Verwijderd schreef op maandag 22 september 2008 @ 17:30:
[...]

Dat wist ik niet, ga ik meteen proberen, dus als ik nu de map inkoop zelf aanmaak, en daarin de map 2008 maak zou het moeten werken?
Als mijn gokje klopt, ja.

Whatever


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Andere optie:

Visual Basic:
1
2
3
4
5
6
    Set objShell = CreateObject("Wscript.Shell")
    strCmd = "%comspec% /c"
    strMakeDir = strCmd & " mkdir " & strTargetDir 
    
    
    objShell.run(strMakeDir),1,true

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Verwijderd

Topicstarter
En jou gok was 100% goed, daar heb ik overheengelezen, het staat duidelijk aangegeven 8)7 .
Bedankt voor de hulp jongens!
Pagina: 1