WinFuture-Forum.de: Problem Mit Batch - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Windows XP
Seite 1 von 1

Problem Mit Batch


#1 Mitglied ist offline   Krenzer91 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 04. Oktober 07
  • Reputation: 0

geschrieben 01. April 2008 - 08:10

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
0

Anzeige



#2 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.339
  • Beigetreten: 08. April 06
  • Reputation: 888
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 01. April 2008 - 08:32

Beitrag anzeigenZitat (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


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
0

#3 Mitglied ist offline   Krenzer91 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 04. Oktober 07
  • Reputation: 0

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

Dieser Beitrag wurde von Krenzer91 bearbeitet: 01. April 2008 - 08:47

0

#4 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.339
  • Beigetreten: 08. April 06
  • Reputation: 888
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 01. April 2008 - 10:15

Diese Lösung kann man ja nochnicht ganz als Optimum bezeichnen aber:

@echo off

if exist %1.%2 goto kopieren

:fehler
echo Keine Datei gefunden
pause
exit

:kopieren
ren %1.%2 %1.old
exit


Resultate:
Angehängtes Bild: Unbenannt.JPG
0

#5 Mitglied ist offline   Krenzer91 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 04. Oktober 07
  • Reputation: 0

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.
0

#6 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.339
  • Beigetreten: 08. April 06
  • Reputation: 888
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 01. April 2008 - 10:43

Beitrag anzeigenZitat (Krenzer91: 01.04.2008, 11:35)

Teilung in der Batch vornehemen muss.


bitte um erklärung was du mit "Teilung" meinst....
0

#7 Mitglied ist offline   Krenzer91 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 04. Oktober 07
  • Reputation: 0

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.
0

#8 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.526
  • Beigetreten: 24. August 04
  • Reputation: 1

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.

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

0

#9 Mitglied ist offline   Krenzer91 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 04. Oktober 07
  • Reputation: 0

geschrieben 01. April 2008 - 11:33

Das war genau das was ich gesucht habe.


Danke. :)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0