Jump to content

CMD - Verzeichnispfad beim Export abschneiden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Board,

 

ich habe hier ein kleines Problemchen, wo ich nicht weiter komme.

 

Ich habe mir ein Skript geschrieben, wo ich in der Befehlszeile mehrere Aktionen gleichzeitig ausführe.

 

for %%a in (%temp%\*.*) do sendmail -f %choice1% -t %choice2 -s %choice3% -a "%%a"&&echo %%a >>%temp%\report.txt

 

Jetzt wird zwar jede Datei sauber in die report.txt geschrieben, nur beginnt jede zeile immer mit dem vollständigen verzeichnispfad. halt alles was in der %temp% Variable steht.

 

C:\DOKUME~1\Username\LOKALE~1\Temp\test.jpg

 

Jetzt will ich erreichen, dass in der report.txt nur noch der Dateiname reingeschrieben wird bzw. zu sehen ist.

 

test.jpg

 

Ich habe da schon etwas mit for /f "delims=" probiert, komme aber leider zu keinem erfolg.

 

Aber vielleicht hat ja hier einer eine Idee.

Vielen Dank

Link zu diesem Kommentar

FOR /F ... IN ('...') ... DO ...

Die For-Schleife führt den Befehl in Klammern aus und geht dann Zeile für Zeile durch das Ergebnis vom Aufruf durch.

 

dir %temp%\*.* /A-D /B

Listet den Inhalt vom %temp%-Verzeichnis auf, ignoriert dabei aber Verzeichnisse (/A-D) und benutzt das kurze Format (/B), zeigt also keine Zusammenfassung am Ende und spart sich den Pfad vor den Dateien.

 

Für weitere Optionen (insbesondere für FOR) einfach mal auf der Kommandozeile

dir /?

bzw.

for /?

eingeben

Link zu diesem Kommentar

Hallo ZeroKnowledge,

 

das mit der Erweiterung der FOR Schleife hat ja funktioniert.

Nur habe ich mein Skript jetzt mal mit mehreren Dateien getestet und nun habe ich im LOG alle Dateien mehrfach drin zu stehen.

 

Befehlszeile:

 

for %%a in (%temp%\*.*) do sendmail -f %choice1% -t %choice2% -s %choice3% -a "%%a"&&echo.&&echo %%a&&FOR /F %%a IN ('dir %temp%\*.* /A-D /B') DO ECHO %%a >>%temp%\report.txt

 

mein Report sieht nun so aus:

 

arrow.gif

barrow.gif

bigfoot.bmp

Blaue

exclam.gif

logowin.gif

oemlogo.bmp

s-logo-22.bmp

Sonnenuntergang.jpg

tips.gif

verisign.bmp

Wasserlilien.jpg

whowhere.bmp

Winter.jpg

arrow.gif

barrow.gif

bigfoot.bmp

Blaue

exclam.gif

logowin.gif

oemlogo.bmp

report.txt

 

dieser Abschnitt wiederholt sich nun so oft wie ich Dateien in dem Verzeichnis habe

 

Wo ist unser Denkfehler?

Link zu diesem Kommentar

Hört sich sehr danach an, dass du die Hochkommas vergessen hast. Ich wette du hast

for /f %%a in (dir ...) do ...

anstatt

for /f %%a in ('dir ...') do ...

in deiner Batch stehen. Man beachte den feinen Unterschied in den runden Klammern. Der Befehl in den Klammern ist im zweiten Teil von Hochkommas umschlossen.

 

Sollte ich nicht recht haben, kopier mal die for-Schleife aus deiner Batch hier rein.

Link zu diesem Kommentar

Kleinigkeiten machen das Leben aus...

OK, hab ich angepasst.

Klappt leider noch nicht ganz. Aber fast,

 

Befehlszeile:

for %%a in ('dir %temp%\*.* /A-D /B') do echo -f %choice1% -t %choice2% -s %choice3% -a "%%a"&&echo %%a >>%temp%\report.txt

 

Report:

'dir

C:\DOKUME~1\User\LOKALE~1\Temp\11.gif

C:\DOKUME~1\User\LOKALE~1\Temp\21.gif

C:\DOKUME~1\User\LOKALE~1\Temp\12.bmp

C:\DOKUME~1\User\LOKALE~1\Temp\31.jpg

C:\DOKUME~1\User\LOKALE~1\Temp\22.bmp

C:\DOKUME~1\User\LOKALE~1\Temp\report.txt

C:\DOKUME~1\User\LOKALE~1\Temp\32.jpg

/A-D

/B'

Link zu diesem Kommentar
  • 2 Wochen später...

Hallo Board,

 

vielleicht könnt ihr mir ja auch noch folgende Frage beantworten:

 

Kann ich in meiner FOR Schleife

for %%a in ('dir %temp%\*.* /A-D /B') do echo -f %choice1% -t %choice2% -s %choice3% -a "%%a"&&echo %%a >>%temp%\report.txt

die Dateien die ich in die report.txt schreibe auch durchnumerieren?

Also das vor der Ausgabe des %%a immer eine Nummer steht? 1, 2, 3 usw.?

 

Vielen Dank

Link zu diesem Kommentar

Als erstes Mal, solltest du dir angewöhnen, die richtige Version von deinem Skript für weiter Fragen zu benutzen ;)

 

Nun zur eigentlichen Frage

SETLOCAL ENABLEDELAYEDEXPANSION

SET cnt=1
FOR /F %%a IN ('dir %temp%\*.* /A-D /B') DO {
   sendmail -f %choice1% -t %choice2% -s %choice3% -a "%%a"
   ECHO !cnt!: %%a >>%temp%\report.txt
   SET /A cnt=!cnt!+1
}

 

Das "Geheimnis" hierbei ist die erste Zeile und die Verwendung von ! anstatt %.

Damit sollte es denn eigentlich auch funktionieren, zumindest hat es das bei mir^^

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...