Hi
Ich habe ein Problem mit einer Batch.
Ich rufe sie aus der kommandozeile auf und übergebe ihr einen dateinamen mit.
test.cmd 20080401.csv
test.cmd ist die auszuführende batch und 20080401.csv ist der übergabewert.
in der anderen batch steht dann folgendes.
@echo off
if not exist %1.csv goto fehler
:kopieren
ren %1.csv %1.old
goto ende
:fehler
echo Keine Datei gefunden
:ende
Jetzt findet er die datei aber nicht weil ich das .csv schon mitübergeben habe.
daher will ich wissen ob ich in der übergabevariable auch das .csv entfernen kann
mfg krenzer
Seite 1 von 1
Problem Mit Batch
Anzeige
#2
geschrieben 01. April 2008 - 08:32
Zitat (Krenzer91: 01.04.2008, 09:10)
Jetzt findet er die datei aber nicht weil ich das .csv schon mitübergeben habe.
daher will ich wissen ob ich in der übergabevariable auch das .csv entfernen kann
daher will ich wissen ob ich in der übergabevariable auch das .csv entfernen kann
schon mal versucht, die "fragestellung" an die Komandozeile umzuformulieren?
@echo off if exist %1.csv goto kopieren :fehler echo Keine Datei gefunden pause exit :kopieren ren %1.csv %1.old exit
MFG
Stefan
#3
geschrieben 01. April 2008 - 08:46
Ne habe ich noch nicht.
Aber eigentlich wollte war meine Frage, ob ich die Variable 1 mit dem Inhalt "20080401.csv" auch in "20080401.old" umbenennen kann. Das heißt das ich mir den Inhalt der Variable bis zum Punkt in einer anderen Variable ( soll 2 sein) speichere und dann sage set 1 = %2.old
mfg
Aber eigentlich wollte war meine Frage, ob ich die Variable 1 mit dem Inhalt "20080401.csv" auch in "20080401.old" umbenennen kann. Das heißt das ich mir den Inhalt der Variable bis zum Punkt in einer anderen Variable ( soll 2 sein) speichere und dann sage set 1 = %2.old
mfg
Dieser Beitrag wurde von Krenzer91 bearbeitet: 01. April 2008 - 08:47
#4
geschrieben 01. April 2008 - 10:15
#5
geschrieben 01. April 2008 - 10:35
Ja so könnte das schon funktionieren
Mein Problem ist aber das ich das aus nem anderem programm mit übergebe und deswegen eine Teilung in der Batch vornehemen muss.
Mein Problem ist aber das ich das aus nem anderem programm mit übergebe und deswegen eine Teilung in der Batch vornehemen muss.
#6
geschrieben 01. April 2008 - 10:43
#7
geschrieben 01. April 2008 - 10:56
Das soll heißen das ich die Batch nicht mit
test.cmd var1.var2
aufruffen kann. ich kann diese variable vorhher nicht teilen.
test.cmd var1.var2
aufruffen kann. ich kann diese variable vorhher nicht teilen.
#8
geschrieben 01. April 2008 - 11:04
Versteh die ganzen Rückfragen nicht, Krenzer91 beschreibt doch recht gut, dass er die Endung abschnippeln vom Parameter %1 will.
Es gibt tatsächlich bei NT-basierten Systemen Funktionen, die das automatisch abschnippeln.
Dein Code wäre daher einfach:
oder
(Alternativ wäre auch
möglich, wenn du mit "alterdateiname.csv.old" statts nur "alterdateiname.old" leben könntest.)
Es gibt tatsächlich bei NT-basierten Systemen Funktionen, die das automatisch abschnippeln.
Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert. Sie können jetzt folgende Syntax verwenden: %~I - Expandiert %I und entfernt alle umschließenden Anführungszeichen ("). %~fI - Expandiert %I zu einem vollständigen Dateinamen. %~dI - erstellt nur den Laufwerkbuchstaben von %I. %~pI - erstellt nur den Pfad von %I. %~nI - erstellt nur den Dateinamen von %I. %~xI - erstellt nur die Dateierweiterung von %I. %~sI - erstellter Pfad enthält nur kurze Dateinamen. %~aI - erstellt die Dateiattribute von %I. %~tI - erstellt Datum und Zeit von %I. %~zI - erstellt die Dateigröße von %I. %~$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen angegebenen Verzeichnisse und expandiert die erste gefundene Datei %I zu dem vollständigen Dateinamen. %~dpI - erstellt den Laufwerkbuchstaben und Pfad von %I. %~nxI - erstellt den Dateinamen und die Dateierweiterung von %I. %~fsI - Expandiert %I zu einem vollständigen Namen, der nur kurze Dateinamen enthält. %~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen angegebenen Verzeichnisse nach %I und erstellt den Laufwerkbuchstaben und Pfad der ersten gefundenen Datei. %~ftzaI - Expandiert %I zu einer Zeile, die der Ausgabe des DIR- Befehls entspricht.
Dein Code wäre daher einfach:
ren %~n1.csv %~n1.old
oder
ren %1 %~n1.old
(Alternativ wäre auch
ren %1 %1.old
möglich, wenn du mit "alterdateiname.csv.old" statts nur "alterdateiname.old" leben könntest.)
Dieser Beitrag wurde von Lofote bearbeitet: 01. April 2008 - 11:17
- ← Update-pack Von Chip Heft 02/2008
- Windows XP & Windows Media Center Edition
- Ich Will Wieder Standby →
Thema verteilen:
Seite 1 von 1