[VB] Xcopy en spaties

Pagina: 1
Acties:
  • 124 views sinds 30-01-2008
  • Reageer

  • winux
  • Registratie: April 2003
  • Laatst online: 10-02 20:34
Ik heb eens script geschreven in VB.
Dit script laat een popup box zien, hier vul ik vervolgens de mapnaam en dan kopieert hij alles via xcopy naar de nieuwe locatie.

dus:
source c:\url\naar\map\mapnaam
destination c:\url\naar\map2\mapnaam

dit gaat allemaal perfect, tot ik een mapnaam met een spatie invul dus: map naam.
Dan kan hij de source niet meer lezen.
Nu heb ik dit uitgevoerd in dos. En daar werkt het wel met spaties.

Hoe kan ik dit oplossen?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Quotes plaatsen om de mapnaam / parameters?

Hoe start je die XCopy? Shell je die? Start je een batchfile? Wat?

Post anders gerust wat relevante code als je wil dat we niet gaan zitten raden.

Overigens heb je het zéér waarschijnlijk ( :P ) niet onder DOS geprobeerd, want daar zijn spaties in bestandsnamen niet eens toegestaan (je weet wel, 8.3 enzo ;) ). Jij hebt het geprobeerd in een command shell of ook wel CLI genoemd (Command Line Interface). Dat het een beetje lijkt op DOS maakt het nog geen DOS ;)

[ Voor 44% gewijzigd door RobIII op 11-10-2006 14:56 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • winux
  • Registratie: April 2003
  • Laatst online: 10-02 20:34
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim Button, objFSO, strFolder, strSrcDir, intRunError, ObjShell, strSourceFolder,cmd, cmd2

strFolder = "c:\map1\"
strSrcDir = "c:\map2\"

strUserIn = InputBox("Vul mapnaam in:) 
strFolder = StrFolder + strUserIn
strSrcDir = strSrcDir + strUserIn
Button = msgbox ("De volgende map wordt aangemaakt: " & strFolder, vbOKCancel, "Bevestiging")

If Button = vbOK then
  Set fs = CreateObject("Scripting.FileSystemObject")
  set objShell = CreateObject("Wscript.Shell")
  objFSO = fs.Createfolder(strFolder)
Set WshShell=CreateObject("WScript.Shell")  
[b]WshShell.Run"xcopy.exe " & strSrcDir & " """ & strFolder & """ /e /o"[/b]
  If intRunError <> 0 Then
    Wscript.Echo "Fout bij kopieren mappen. Error code: " &intRunError
  else
  wscript.echo "De mappen zijn gekopieërd, naar het archief: " &strUserIn
  End If
  cmd2="%comspec% /c rd " & strSrcDir & " /s /q "
  intRunError = objShell.Run(cmd2, 0, True)
End If

de regel die is dik gedrukt is de xcopy regel.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dik gedrukt? ;)
Regel 16 bedoel je...

Anyway; je doet dus een "ordinaire shell.run". Je kunt het dan dus oplossen door quotes om de source te zetten (zoals je ook al bij de destination hebt zo te zien)...

code:
1
WshShell.Run "xcopy.exe """ & strSrcDir & """ """ & strFolder & """ /e /o"


Easy as that.

Overigens, wat doet intRunError ? Die wordt nergens gezet of geïnitialiseerd en wordt wel gebruikt in een if-statement? :X

[ Voor 36% gewijzigd door RobIII op 11-10-2006 15:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • winux
  • Registratie: April 2003
  • Laatst online: 10-02 20:34
Ik zat te prutsen met enkele quotes :X .
Maar hij werkt nu :)
Die intRunError gebruikte ik eerst wel toe riep ik hem anders aan.
Maar bedankt voor je hulp.

  • winux
  • Registratie: April 2003
  • Laatst online: 10-02 20:34
Hij werkt nu wel, als er alleen spaties in de mapnaam staan. Maar andere tekens pakt hij nu niet.
cmd="%comspec% /c xcopy.exe """ & strSrcDir & """ """ & strFolder & """ /e /o "

Ik heb bijv. een mapnaam "hallo, wie ben jij 12-34-56"

En die pakt hij niet.

Wie kan me nog helpen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:29
Krijg je errrors ?
Hoe ziet je commandline er uit voor je die echt uitvoert ? Heb je die al eens naar het scherm geprint ?

Kortom, heb je zelf al eens geprobeerd om het probleem op te lossen ?
We willen je hier best helpen, maar het is hier ook geen afhaalbalie.

https://fgheysels.github.io/

Pagina: 1