Archiv Server-Windows 15.877 Themen, 54.317 Beiträge

Pfad + Dateiname in einer Batch-Datei einlesen

und_Roy / 8 Antworten / Baumansicht Nickles

Hi,


ist folgendes durch eine Batchdatei machbar?:


Ich möchte Excel-Dateien nicht direkt mit Excel öffnen, sondern mit einer vorgeschalteten Batch-Datei. Das heisst, wenn ich auf diese Datei "doppelklicke" soll sich die Batch-Datei öffnen und vorher die Möglichkeit bieten eine lokale Kopie zu erstellen oder die Datei direkt auf dem Server zu öffnen. Wie ich die Verknüpfungen unter Windows einstelle ist kein Problem. Die Frage ist, wie bekomme ich den Pfad+Dateinamen in den Code der Batch-datei. Kann ich das irgendwie auslesen? Diese Batch-Datei sollte nicht nur in genau einem Pfad für eine Datei gelten, sondern auf allen Ebenen für viele Dateien (mit den selben Erweiterungen natürlich). Sieht also irgendwie so aus (nur die wichtigen Stellen):


choice /cjn Wollen sie vorher eine lokale Kopie erstellen?
if errorlevel 2 goto nein
if errorlevel 1 goto ja


:ja
rem Hier brauche ich nun den pfad+dateiname um eine Kopie zu erstellen und
rem um die Datei dann zu öffnen
copy %pfad%\%dateiname ...


:nein
rem Hier genauso



Würd mich freuen, wenn das möglich ist und wenn ihr mir helfen könnt.


Gruß, Roy

Elvereth und_Roy „Pfad + Dateiname in einer Batch-Datei einlesen“
Optionen

schreibe in die Excel-Datei ein %1 für den ersten Parameter.

z.B.

TEST1.BAT :

-- beginn
@echo ich starte jetzt %1 mit excel
-- ende

wenn Du "test1.bat myexcel.xls" aufrufst, wird ausgegeben:

ich starte jetzt myexcel.xls mit excel



%2 ist zweiter Parameter, %3 dritter etc. Dateinamen mit Leerzeichen musst Du in Anführungszeichen setzen.

test1.bat "Das ist ein Test.xls"


hoffe es hilft

CU Elvereth

REPI und_Roy „Pfad + Dateiname in einer Batch-Datei einlesen“
Optionen

Irgendwie musst Du dem Batch doch den Pfad und Dateinamen sagen, denn raten kann er nicht.
1. Du verdratest ihn im Batch fest
2. Du übergibst ihn als Option beim Start
3. Du liest ihn aus einer Datei aus, wobei dann der Name dieser Datei dem System bekannt sein muss
4. Du vereinbarst Pfad und Dateiname in einer Environmentvariable

Also Du siehst an irgendeiner Stelle muss der Name bekannt gegeben werden.

Für Dein Problem, würde ich den Pfad und Namen beim Start optinal übergeb bzw. im Batch ggf. abfragen (zum B. set /P bei NT Systemen).

Dann kannst Du den Batch für alle Dateien verwenden.

Es gibt auch wesentliche Unterschiede für Win9x/ME und NT basierte Windows BS.

und_Roy Nachtrag zu: „Pfad + Dateiname in einer Batch-Datei einlesen“
Optionen

@Repi
Genau dieses direkte "Übergeben" des Dateinamen und des Pfades versuche ich zu umgehen, denn ich will eine beliebige Excel-datei an einem beliebigen Ort durch diese Batch-Datei öffnen.
Durch das Doppelklicken muss ja der Pfad und der Dateiname irgendwo im Arbeitsspeicher landen. Ich hatte gehofft, dass es möglich ist diese Information in einer Batch-Datei auszulesen und dort in einer Variablen zu speichern.

und_Roy Nachtrag zu: „@Repi Genau dieses direkte Übergeben des Dateinamen und des Pfades versuche ich...“
Optionen

So wie Evereth es beschrieben hat funktionierts. Das hatte ich zwar schon versucht, aber hab wohl irgendwo einen Fehler eingebaut. das klappt auch, wenn ich es direkt aus dem Windowexplorer per Doppelklick starte (natürlich erst nachdem ich als "Öffneprogramm" meine Batch-datei eingetragen habe.
Dankeschön

Gruß, Roy

REPI und_Roy „So wie Evereth es beschrieben hat funktionierts. Das hatte ich zwar schon...“
Optionen

Also doch für jede Exceldatei eine eigene Verknüpfung !
Doch noch recht umständlich !

Elvereth REPI „Also doch für jede Exceldatei eine eigene Verknüpfung ! Doch noch recht...“
Optionen

du könntest das auch so machen, dass du in Explorer>Ordneroptionen>Dateierweiterungen alle .xls-Dateien mit Deiner Batch verknüpfst. Anstatt excel.exe trägst du sichern.bat ein. Dann würde beim klicken auf eine Excel-Datei Deine Batch gestartet. Den Dateinamen hängt er imho automatisch an. Du könntest es auch wie repi sagte über ein Script machen, was Du ebenfalls so verknüpfen kannst. In Ordneroptionen kann man alles was ausführbar ist, als Programm zum öffnen angeben.

CU Elvereth

REPI und_Roy „So wie Evereth es beschrieben hat funktionierts. Das hatte ich zwar schon...“
Optionen

Entspricht übrigens dem Punkt 2 meines ersten Postings !

REPI und_Roy „@Repi Genau dieses direkte Übergeben des Dateinamen und des Pfades versuche ich...“
Optionen

Das heisst also, der Doppelklick soll Pfad und Dateiname übergeben.
Wo klickst Du denn drauf ? Auf die Exceldatei oder den Batch ?

Das würde bedeuten, daß die zu klickende Datei im selben Verzeichniss liegt, wie die Exceldatei und woher erfährt man dann denn Namen der zu öffnenden Datei, oder ist es ein immer wiederkehrender Defaultname ?
Durch das Doppelklicken muss ja der Pfad und der Dateiname irgendwo im Arbeitsspeicher landen

Nun Pfad und Dateiname werden sicher ausgelesen, aber eben von der Datei, auf die Du klickst. Wenn Du auf die Exceldatei klickst, wird halt der Batch nicht geöffnet,bzw. umgedreht, wird der dateiname der batchdatei ausgelesen.

Du könntest Dir aber in die Exceldatei eine autostart(auto_öffnen) Routine per VBA einfügen, welche beim Start dieser eine Sicherheitskopie automatisch anlegt ! Siehe dazu die Hilfe zu VBA.

Gruß




repi