denisxp
Goto Top

Batch soll Variablen ignorieren (AppData als Ordner)

Kopieren eines Ordners samt Unterordner in ein Verzeichnis mit Namen %AppData% (keine Variable!)

Hallo,

ich habe eine Anwendung mit Thinstall portabel erstellt und möchte diese nun mithilfe einer Batch mit der lokal installierten Version des Programms aktualisieren. Das Problem ist das Thinstall einen Ordner mit Namen %AppData% erstellt, das ja standardmäßig als Variable für C:\Dokumente und Einstellungen\User\Anwendungsdaten steht. Dies habe ich mittels des Befehls

[CODE] set AppData= [/CODE]

temporär deaktiviert. Wenn ich nun den Ordner mit dem Befehl

[CODE] xcopy "C:\Dokumente und Einstellungen\Denis\Anwendungsdaten\Google\GoogleEarth\*.*" "B:\PortableApps\Google\Google Earth\%AppData%\Google\GoogleEarth\" /y /I /H /Q /C /E [/CODE]

kopieren will klappt dies auch ohne Probleme. In einer Batch allerdings wird der Befehl (mit vorangestelltem "set AppData=") zwar als erledigt (3 Dateien kopiert) angezeigt, es wird allerdings nichts kopiert. Gebe ich den Befehl (mit vorangestelltem "set AppData=") per Hand in die Eingabeaufforderung ein klappt ales problemlos! Ich habe auch bereits den Umweg über nachträgliches Umbenennen des Ordners probiert:

[CODE] rmdir /S /Q "B:\PortableApps\Google\Google Earth\%AppData%\"
xcopy "C:\Dokumente und Einstellungen\Denis\Anwendungsdaten\Google\GoogleEarth\*.*" "B:\PortableApps\Google\Google Earth\AppData\Google\GoogleEarth\" /y /I /H /Q /C /E
ren "B:\PortableApps\Google\Google Earth\AppData" "%AppData%" [/CODE]

Leider wieder das selbe Spiel...per Hand klappt alles wunderbar, in der Batch geschieht überhaupt nichts.

Ich hoffe jemand kann mir sagen woran das liegen könnte bzw einen Lösungsvorschlag vorschlagen!

Danke,

mfg, Denis

Content-Key: 91655

Url: https://administrator.de/contentid/91655

Printed on: April 25, 2024 at 17:04 o'clock

Member: Iwan
Iwan Jul 09, 2008 at 12:26:39 (UTC)
Goto Top
dumme Frage, aber warum muss die Variable unbedingt AppData heissen?
Member: Biber
Biber Jul 09, 2008 at 12:36:45 (UTC)
Goto Top
Moin DenisXP,

willkommen im Forum.
<OT>
"... einen Lösungsvorschlag vorschlagen!" ist eine Formulierung, die bei mir immer Konzentrationsstörungen hervorruft und von wichtigeren Problemen ablenkt. Dann träum ich immer von weißen Schimmeln und schwarzen Raben....
</OT>

Da Du nicht dauerhaft eine Variable mit einem LEER-Wert als Umgebungsvariable hinterlegen kannst, kannst Du nur eine Variable %AppData% MIT einem Wert (Meinetwegen c:\temp oder D:\Appz) definieren.

Also quäl Dich nicht mit einen "SET Appdata=" ... das kann nicht funktionieren.

Grüße
Biber
Mitglied: 60730
60730 Jul 09, 2008 at 14:15:27 (UTC)
Goto Top
(OT)@ Biber
"... einen Lösungsvorschlag vorschlagen!"
Kennst du Snatch - Schweine und Diamanten?
Zitat Pit Brat -> "Deal zu Dealen..."

Was ich an dem Konstrukt nicht verstehe - ein Ordner names %Appdata% soll erzeugt werden.

Wenn denn die Variable leer ist - kann ich mir nicht vorstellen, daß nun %Appdata% nicht mehr als Variable erkannt wird, sondern ein Ordner mit diesem Namen erzeugt wird.

Von daher glaube ich nicht (W2k Selbsttest) daß sein Konstrukt überhaupt funktioniert.
Member: Biber
Biber Jul 09, 2008 at 14:45:24 (UTC)
Goto Top
Moin T-Mo,

klar, damit hast Du recht.
Einen Ordner namens %varname% lässt sich natürlich nur direkt vom CMD-Prompt anlegen, nicht aus einer Batchdatei heraus.

Insofern warte ich auch mit den anderen auf Erläuterung, wieso denn wohl diese Ordner plötzlich da ist (bzw. wer oder was den anlegt).

Grüße
Biber

[Edit] P.S. Kann natürlich sein, dass sich aus dem Batch heraus so ein Ordner %varname% anlegen/ansprechen lässt, wenn die %-Zeichen maskiert oder gedoppelt werden...
...aber Hey! - haben wir nicht schon mit M$ genug Probleme, wenn wir die vorgesehenen Pfade beschreiten?
[/Edit]
Member: Biber
Biber Jul 09, 2008 at 19:44:20 (UTC)
Goto Top
Also gut,

falls ich mich in meinem P.S. zu unverständlich ausgedrückt haben sollte...
Im Batch dann so maskieren:
rmdir /S /Q "B:\USB\DD\PortableApps\Google\Google Earth\^%AppData^%\"  

xcopy ....
ren "B:\PortableApps\Google\Google Earth\AppData" ^%AppData^%  

Dennoch sollte eher eingegriffen werden... bevor überhaupt so eine Ordner namens %AppData% (buchstabengetreu) angelegt wird. Das kann doch nicht das erwünschte und vorgesehene Verhalten von Thinstall sein, oder?

Grüße
Biber
Member: DenisXP
DenisXP Jul 09, 2008 at 19:54:19 (UTC)
Goto Top
Hey und danke für die vielen Antworten in so kurzer Zeit!

Meine Formulierung war etwas unglücklich, fällt mir auch gerade auf...hatte das irgendwie im letzten Augenblick nochmal geändert!

Es geht darum ein mit der Thinstall Demo (http://www.thinstall.com/) portabel gemachtes Google Earth mit einem installierten zu synchronisieren. Thinstall stellt quasi eine Sandbox mit eigener Registry und eben auch eigenen Anwendungsdaten und benötigt deswegen eben unter anderem den Ordner %AppData%. Eben in diesem liegen nun einmal (merkwürdigerweise...) die Anwendungsdaten die ich synchronisieren will.

@Biber
Was genau meinst du denn mit dem maskieren?

Bzw da der Ordner nun einmal erstellt wird, gibts es andere Möglichkeiten diesen zu bearbeiten?

Danke,
mfg Denis


Edit:
Sehe gerade Biber hat das bereits genauer beschrieben, dann werd ich das doch gleich mal ausprobieren!

Edit2:
Klappt leider nicht...bereits beim Löschen kommt "Das System kann den angegebenen Pfad nicht finden", der erstellte Ordner schließlich wird einfach nur in "^" umbenannt...

Ich verstehe übrigens überhaupt nicht warum die Befehle in der gleichen Reihenfolge eingegeben in der CMD ohne Probleme laufen und in der Batch nicht funktionieren...
Member: Biber
Biber Jul 10, 2008 at 07:30:12 (UTC)
Goto Top
Moin DenisXP.

Ich verstehe übrigens überhaupt nicht warum die Befehle in der gleichen Reihenfolge eingegeben in der CMD ohne Probleme laufen und in der Batch nicht funktionieren
siehe BatchTutII unter Punkt c

Ich halte -um es nochmals zu schreiben- es für die falsche Strategie, es als gottgegeben hinzunehmen, dass so ein Verzeichnis %AppData% angelegt wird und es gegen alle Widerstände ansprechen zu wollen.
Ich habe es aber, da es Dir offensichtlich ein Herzenswunsch zu sein scheint, eben noch mal getestet.
So ginge es:

Am CMD-Prompt ließe sich ein Verzeichnis %einTest% anlegen mit
Md %eintest%
In einem Batch kann iich dieses ansprechen mit (z.b.)
dir %%einTest%%
-- oder --
rd x:\bla\%%einTest%%
Die Maskierung der Prozentzeichen sollte also in diesem Fall mit doppelten Prozentzeichen statt mit Caret erfolgen.

Grüße
Biber
Member: DenisXP
DenisXP Jul 10, 2008 at 19:18:16 (UTC)
Goto Top
Wow, vielen Dank!
Es funktioniert! Mit doppeltem %% kann ich den Ordner direkt ansprechen und Dateien hineinkopieren, muss also überhaupt keinen Umweg über das Löschen, Neu erstellen und Umbenennen machen!

Und was den Herzenswunsch angeht, ich weiß nunmal nicht wie ich einem doch recht komplexen Programm wie Thinstall das Anlegen eines solchen Ordners abgewöhnen kann...insofern bleibt außer dem Nicht-Nutzen des Programms nur die Möglichkeit des Akzeptierens und somit Ansprechen des Ordners...zumindest in meinen Augen...

Nun funktioniert aber alles wie es soll, ich kann meine Dateien abgleichen und habe zudem noch einiges über Batch-Dateien gelernt (ernsthaft, ich werd mir das Tut demnächst mal komplett zu Gemüte führen)!

Vielen Dank,
wirklich ein klasse Forum hier!

mfg, Denis