(Batch)Warum funktioniert mein Umbenenn-Code nicht?

...komplette Frage anzeigen

1 Antwort

bei test fehlt der Stern  "*"

aber warum verwendest du nicht besser windows script,  das ist viel einfacher zu durchschauen ... geht auch mit environment parametern oder sogar mit input-message-boxen ....    VBA Style mäßig

nur wenige haben den Scripting Host deaktiviert.

Antwort bewerten Vielen Dank für Deine Bewertung
ThomasAral 06.01.2016, 18:40

hier versuch mal das (beginnt ab VERZ) und speicher es mit Notepad und Dateityp = Alle Dateien  unter den Namen    filnam.vbs   auf den Desktop ab.  Wichtig ist die Endung   .vbs  Dann doppeltklicken und in der Eingabebox (vorbelegt mit MY) den gewünschten USERINPUT eingeben, dann OK drücken. Am Ende die CMD Boxen schließen.

VERZ = "D:\MyVerz"
set SO = createobject("WScript.Shell")
SO.currentdirectory = VERZ
SO.Run("%comspec% /k dir"), 1, FALSE
USERINPUT = InputBox("Userinput","Filename Change:","MY")
DELIM = "_"

set FSO = CreateObject("Scripting.FileSystemObject")
set FO = FSO.GetFolder(VERZ)
set FC = FO.Files ' collection

For Each a in FC
i = InStr(a,DELIM)
if i then
a1 = Mid(a,1,i-1)
a2 = Mid(a,i+1)
SO.RUN("%comspec% /k ren """ & a & """ """ & USERINPUT & "_" & a2 & """"), 0, FALSE
end if
Next
SO.Run("%comspec% /k dir"), 1, TRUE

0
ThomasAral 06.01.2016, 18:53
@ThomasAral

mit den RUN Befehlen kannst du natürlich wenns unbedingt sein muss auch vom VBS aus CMD Dateien aufrufen. Du könntest also wenn du unbedingt auf die CMD Dateien stehst erst mit dem VBS alles regeln sodass die Pfade usw. richtig sitzen und dann das CMD Batch aufrufen.

SO.RUN("(PFAD)\mybatch.bat"), 1, TRUE

0
Kallyguru 07.01.2016, 09:11
@ThomasAral

Cool danke für den Tipp und die Antwort.
Ja ich denke du hast recht, werde mir wohl mal ein bisschen vb aneignen. 


Was ist überhaupt ein FO.file ? XD

Aufjedenfall nochmal danke für die Hilfe und den Denkanstoß :D


0
Kallyguru 07.01.2016, 09:15
@Kallyguru

bzw. gibt es auch für Excel und Word dateien so eine Endung ?

weil wenn ich jetzt raten würde is FO eine Gruppierung zu der auch vbs zugeordnet wird :D

0
ThomasAral 07.01.2016, 09:20
@Kallyguru

bei mir hats funktioniert ... die Dateien müssen natürlich den DELIM im Dateinanem haben die geändert werden,  nur diese werden geändert, so hab ich das verstanden.   Also

bla_irgendwas   wird geändert in USERINPUT_irgendwas   aber   datname (ohne unterstrich)  wird nicht geändert.

wenn irgendwas mit pfad oder rechten falsch ist, dann geb im mittleren SO.Run  Parameter   1, FALSE   (statt 0, FALSE)  ein.

es erscheint dann das fenster bei REN  (mit evtl. fehlerausgabetext)

FO ist meine Bezeichnung für FolderObject, damit es kurz ist und dennoch nicht mit anderen temporären Variablen verwechselt wird. Normal nehmen die in Beispielen dann    objFolder =  oder sowas... ist halt mehr Schreibarbeit.

FO.Files  ist dann die Files Methode des FolderObject s . Das Ergebnis wird in die Variable FC gespeichert (C steht für collection). Eine Collection ist in Visual Basic Script ein eindimensionales Array mit beliebigen Datentypen (auch gemischt). In unserem Fall sinds natürlich alles Strings.

0
ThomasAral 07.01.2016, 09:25
@ThomasAral

also um korrekt zu sein:  es ist kein eindimensionales Array im strengen Sinn, aber es verhält sich in vieler Hinsicht ähnlich, hat aber eine zusätzliche Methode Count.  Es ist jedoch nicht kompatibel. Man kann eine Collection nicht mit einer Zuweisung einem gleichgroßen array zuweisen. das müsste man dann für jedes Element einzeln machen (mit Schleife).

0
Kallyguru 07.01.2016, 09:44
@ThomasAral

Klappt jetzt alles Super :D

danke für dei sehr hilfreiche Hilfe ^^

kennst du vllt noch ne gute Seite wo man nen bissi was über GUI in vbs erfahren kann ?

0
Kallyguru 07.01.2016, 10:33
@Kallyguru

der Pfad läuft ja soweit ich das verstanden hab auf den Desktop
wegen %comspec%

aber ich bekomms einfach nicht hin den Pfad auf was anderes zu verweisen
soweit ich gelesen habe gibt es sowas wie %cd% in vbs gar nicht
sondern man muss sich das aus den dateiinfos rauskratzen XD

das mit dem derzeitigen Pfad habe ich ja hinbekommen
nur es funktioniert einfach nicht
es kommt nichtma ne fehlermeldung, sonder es passiert nix.

Ja die Dateien haben Unterschriche :D

also z.B test_1.docx

oder test_2.vbs

0
Kallyguru 07.01.2016, 10:39
@Kallyguru

okay comspec ist der pfad der cmd XD

ohw mann
sry aber versuch grad den code nachzuvollziehen, fällt mir irgendwie schwer

0
ThomasAral 07.01.2016, 10:41
@Kallyguru

ja weil wenn du  dir  einfach so durch RUN schickst, dann sucht er nach einem   dir.exe   was ja nicht geht  (dir ist ja ein cmd befehl).

0

Was möchtest Du wissen?