PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Win 7 - cmd soll datei neben sich kopieren


Fatality
2010-12-15, 15:27:53
Moin,

habe ein problem mit einer cmd..

die copy.cmd enthält einen einfachen kopierbefehl die datei bla.zip die direkt neben ihr liegt, in einen ordner auf der hdd zu kopieren (cmd und bla.zip befinden sich auf einer cdrom).
die cmd funktioniert einwandfrei solange man die eingabeaufforderung manuell startet, zur cmd navigiert und dann die cmd aufruft.

problem: wenn man die cmd mit doppelklick startet, ist deren startverzeichnis immer C:\windows/system32 wo auch die cmd.exe liegt und nicht im dem verzeichnis wo die copy.cmd auf dem cd-rom liegt. ergo kann die zu kopierende bla.zip nicht gefunden werden und es findet kein kopieroperation statt.

gibt es irgendeinen befehl oder variable die ich dier copy.cmd hinzufügen kann das sie den befehl genau dort ausführt wo sie sich befindet wenn ich sie doppelklicke?

problem ist das ich die copy.cmd "als administrator ausführen" lassen muss weil ich die dabei in C:\windows/system32 kopieren lassen muss.
wenn ich das nicht tue, bekomme ich "zugriff verweigert".

soweit ich das sehe ist "als administrator ausführen" dafür verantwortlich das immer von /system32 versucht wird zu starten bei kopierbefehl..

BK-Morpheus
2010-12-15, 16:16:57
Evtl. funktioniert es, wenn du mit %CD% arbeitest.
Das ist die Systemvariable für den aktuellen Pfad.

Fatality
2010-12-15, 17:02:40
danke bk

nach langem googeln habe ich gerade pushd %~dp0
gefunden, damit kann ich auch nach "als admin ausführen" den aktuellen pfad erzwingen lassen :) funzt.

HeldImZelt
2010-12-15, 23:54:29
Pushd legt lediglich den Pfad auf den Stack. Wie hilft das genau bei dem Problem weiter?

Sir_Henry
2010-12-16, 01:57:36
Hmm, ich verstehe das problem nicht. gib der "cmd" den Pfad als variable mit:

copy.cmd "c:\toller ordner"

in der cmd:

set pfad=%1

HeldImZelt
2010-12-16, 02:54:34
Pushd ist in diesem Fall schlechter Programmierstil, weil die Stackablage gar nicht gebraucht oder durch popd geleert wird. Besser ist 'cd /d %~dp0'. Pushd impliziert das lediglich unter Anderem.

@echo off
rem pushd %~dp0
rem cd /d %~dp0
echo %~dp0
echo %cd%
echo.
pause
Als Admin ändert sich der aktuelle Pfad %CD%, der aber mit %~dp0 zurückgesetzt werden kann.

Haarmann
2010-12-16, 06:44:35
Arbeitsverzeichnis angeben?

Siegfried
2010-12-16, 21:51:06
du koenntest auch autohotkey benutzen
das ist aehnlich simple wie bat dateien und beherrscht relative pfade