Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

BATCH - Problem mit Variablenauflösung

Frage Entwicklung Batch & Shell

Mitglied: einfachBernd

einfachBernd (Level 1) - Jetzt verbinden

09.04.2014, aktualisiert 10.04.2014, 1604 Aufrufe, 13 Kommentare, 1 Danke

hi @all,

anbei mal der Code

01.
echo off 
02.
cls 
03.
setlocal ENABLEDELAYEDEXPANSION 
04.
 
05.
rem Variablen 
06.
set "installpath=%ProgramFiles%\Statistik" 
07.
set "mdbSRVpath=%~dp0" 
08.
set "office32reg=HKLM\SOFTWARE\WOW6432Node\Microsoft\Office" 
09.
set "office64reg=HKLM\SOFTWARE\Microsoft\Office" 
10.
set "accessreg=Access\InstallRoot\Path" 
11.
set "shortcutpath=%allusersprofile%\desktop" 
12.
 
13.
for /f "delims=" %%a in ('dir "%systemdrive%\msaccess.exe" /S /Q /B ^|^ findstr /i office') do ( set "accessexe=%%a" & set "accesspath=!accessexe:~0,-13!") 
14.
 
15.
goto installation 
16.
 
17.
:installation 
18.
echo ### INSTALLATION ### 
19.
echo Anlage lokaler Installationsorder "%installpath%" 
20.
 md "%installpath%" >nul 2>nul 
21.
  
22.
echo. 
23.
echo Kopiere Datenbank auf "%installpath%" 
24.
 if exist "%mdbSRVpath%" ( copy /Y "%mdbSRVpath%*.md*" "%installpath%" >nul 2>nul ) 
25.
 for /f "delims=" %%a in ('dir "%~dp0*.mdw" /b ') do ( set "accessmdw=%%a" ) 
26.
 for /f "delims=" %%a in ('dir "%~dp0*.mdb" /b ') do ( set "accessmdb=%%a" ) 
27.
  
28.
echo. 
29.
echo Erstelle Shortcut auf Desktop 
30.
 start "" /w "%~dp0shortcut.exe" /F:"%shortcutpath%\Statistik.lnk" /A:C /T:""%accessexe%" "%installpath%\%accessmdb%" /wkgrp "%installpath%\%accessmdw%"" /W:"%installpath%" 
31.
  
32.
 goto ende 
33.
 
34.
:ende 
35.
echo. 
36.
echo ### END OF SCRIPT ###
Problem ist dass bei Zeile 30 hinter /T: die Variablen nicht so aufgelöst wird wie ich das möchte.
Was macht das Script?
1. Es sucht nach einer MSACCESS.exe (Access) und versetzt diese mit 2 Variablen (exe und Pfad)
2. Dann werden die nötigen mdb und mdw in das %installpath% kopiert
3. anschließend sollte ein Shortcut auf den Public Desktop erstellt werden mit den Verweis auf
01.
 %InstallPathAccess% %accessmdb% /wkgrp %accessmdw% 
Ich habe es schon mit """ und "" und "' usw. ausprobiert... Ohne Erfolg

Wenn ich mit
01.
 start "" /w "%~dp0shortcut.exe" /F:"%shortcutpath%\Statistik.lnk" /A:C /T:"%accessexe% %accessmdb%" 
das mache funktioniert es aber das ist nicht das was ich benötige.

Wer hat ne Idee?

LG Berni
Mitglied: Xaero1982
09.04.2014 um 12:05 Uhr
Moin,

mich wundert, dass du alles in "" setzt ... auch bei set "variablenname=blabla". mWn sollte es set variablenname="blabla" sein oder auch set variablenname=blabla.

Deswegen mal set accessexe=%%a ohne "" in Zeile 13 und dann auch ohne "" in Zeile 30. Gleiches gilt für die anderen Variablen.

Gruß
Bitte warten ..
Mitglied: einfachBernd
09.04.2014 um 12:08 Uhr
Hi,

danke für die schnelle Reaktion.
Es funktioniert alles sauber bis Zeile 30, also Erstellung von Shortcut.

wenn man eine Variable mit Leerzeichen (bei mir Pfad) befüllt macht es Sinn das so zu machen
01.
 set "variablenname=inhalt" 
Wer hat ne Idee?
Bitte warten ..
Mitglied: einfachBernd
09.04.2014 um 12:10 Uhr
Kleine Ergänzung.

wenn ich mit
01.
 echo 
mir Zeile 30 ausgeben lassen kommt wie folgt raus

start "" /w "C:\Users\Administrator\Desktop\Statistik\Statistik\shortcut.exe" /F:"C:\ProgramData\desktop\Statistik.lnk" /A:C /T:""C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE" "C:\Program Files\Statistik\Statistik.mdb" /wkgrp "C:\Program Files\Statistik\Statistik.mdw"" /W:"C:\Program Files\Statistik"

Das heisst er löst alle Variablen korrekt auf... HELP
Bitte warten ..
Mitglied: einfachBernd
09.04.2014 um 12:11 Uhr
01.
 start "" /w "C:\Users\Administrator\Desktop\Statistik\Statistik\shortcut.exe" /F:"C:\ProgramData\desktop\Statistik.lnk" /A:C /T:""C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE" "C:\Program Files\Statistik\Statistik.mdb" /wkgrp "C:\Program Files\Statistik\Statistik.mdw"" /W:"C:\Program Files\Statistik" 
Bitte warten ..
Mitglied: Xaero1982
09.04.2014, aktualisiert um 12:31 Uhr
Nu bin ich verwirrt: Zitat:"Er löst die Variablen nicht so auf wie ich es möchte"
Wie soll er sie denn auflösen, außer so wie er es ja nun tut? Und das offenbar auch noch richtig

Vielleicht hilft dir das ja weiter:
http://www.administrator.de/forum/verknüpfungen-erstellen-72240.ht ...
Bitte warten ..
Mitglied: einfachBernd
09.04.2014 um 13:50 Uhr
danke für den Link, jedoch möchte ich kein VBS nutzen...
eigtl reicht mir der richtige Code ;)
Bitte warten ..
Mitglied: bastla
09.04.2014 um 15:29 Uhr
Hallo einfachBernd!

Etwas eingedampft (und ungetestet) etwa so:
01.
@echo off & setlocal 
02.
cls 
03.
 
04.
rem Variablen 
05.
set "installpath=%ProgramFiles%\Statistik" 
06.
set "mdbSRVpath=%~dp0" 
07.
set "office32reg=HKLM\SOFTWARE\WOW6432Node\Microsoft\Office" 
08.
set "office64reg=HKLM\SOFTWARE\Microsoft\Office" 
09.
set "accessreg=Access\InstallRoot\Path" 
10.
set "shortcutpath=%allusersprofile%\desktop" 
11.
 
12.
for /f "delims=" %%a in ('dir "%systemdrive%\msaccess.exe" /S/B ^|findstr /i office') do set "accessexe=%%a" & set "accesspath=%%~dpa" 
13.
echo ### INSTALLATION ### 
14.
echo Anlage lokaler Installationsorder "%installpath%" 
15.
md "%installpath%" >nul 2>nul 
16.
  
17.
echo. 
18.
echo Kopiere Datenbank auf "%installpath%" 
19.
if exist "%mdbSRVpath%" copy "%mdbSRVpath%*.md*" "%installpath%" >nul 2>nul 
20.
for /f "delims=" %%a in ('dir "%~dp0*.mdw" /b') do set "accessmdw=%%a" 
21.
for /f "delims=" %%a in ('dir "%~dp0*.mdb" /b') do set "accessmdb=%%a" 
22.
  
23.
echo. 
24.
echo Erstelle Shortcut auf Desktop 
25.
"%~dp0shortcut.exe" /F:"%shortcutpath%\Statistik.lnk" /A:C /T:""%accessexe%" "%installpath%\%accessmdb%" /wkgrp "%installpath%\%accessmdw%"" /W:"%installpath%" 
26.
  
27.
echo. 
28.
echo ### END OF SCRIPT ###
wobei auch mir das Problem nicht ganz klar ist - was sollte denn die Zeile 30 (hier 25) genau für eine Syntax erzeugen? Kennt die "shortcut.exe" keinen Parameter für die "Argumente" der Verknüpfung?

Ich würde übrigens "shortcut.exe" ohnehin nicht verwenden, da ich (siehe das von Xaero1982 verlinkte Beispiel) mit einem Batch, der ein (temporäres) VBS selbst erzeugt, das Auslangen fände und nicht noch zusätzlich ein Programm "mitschleppen" wollte ...

Grüße
bastla
Bitte warten ..
Mitglied: einfachBernd
09.04.2014, aktualisiert um 15:36 Uhr
Hi Bastla,

danke für deine schnelle Reaktion

also es wird der Shortcut nicht erzeugt, das ist das Problem.

01.
rem temporäres VBScript erzeugen ...  
02.
	echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs 
03.
	echo Set objShortcut=objShell.CreateShortcut("%shortcutpath%\Statistik.lnk")>>%temp%\MakeShortCut.vbs 
04.
	echo objShortcut.TargetPath="%accessexe%" "%installpath%\%accessmdb%" /wkgrp "%installpath%\%accessmdw%">>%temp%\MakeShortCut.vbs 
05.
	echo objShortcut.WorkingDirectory="%installpath%">>%temp%\MakeShortCut.vbs 
06.
	echo objShortcut.Save>>%temp%\MakeShortCut.vbs 
07.
	 
08.
	cscript //nologo %temp%\MakeShortCut.vbs  
09.
	del %temp%\MakeShortCut.vbs
funktioniert leider auch nicht... k.a. wieso
Bitte warten ..
Mitglied: bastla
LÖSUNG 09.04.2014, aktualisiert 10.04.2014
Hallo einfachBernd!

Versuch es mal so:
01.
rem temporäres VBScript erzeugen ...  
02.
     >%temp%\MakeShortCut.vbs echo Set objShell=WScript.CreateObject("Wscript.Shell") 
03.
    >>%temp%\MakeShortCut.vbs echo Set objShortcut=objShell.CreateShortcut("%shortcutpath%\Statistik.lnk") 
04.
    >>%temp%\MakeShortCut.vbs echo objShortcut.TargetPath="%accessexe%" 
05.
    >>%temp%\MakeShortCut.vbs echo objShortcut.WorkingDirectory="%installpath%" 
06.
    >>%temp%\MakeShortCut.vbs echo objShortcut.Arguments="""%installpath%\%accessmdb%"" /wkgrp ""%installpath%\%accessmdw%""" 
07.
    >>%temp%\MakeShortCut.vbs echo objShortcut.Save 
08.
	 
09.
    cscript //nologo %temp%\MakeShortCut.vbs  
10.
    del %temp%\MakeShortCut.vbs
Ansonsten: Wenn die Verknüpfung nicht erstellt wird, könnte das natürlich auch ganz einfach auf fehlende (Schreib-)Rechte für "%allusersprofile%\desktop" zurückzuführen sein - der Batch sollte jedenfalls als Admin ausgeführt werden ...

Grüße
bastla

P.S.: Das Voranstellen der Ausgabeumleitung (>>%temp%\MakeShortCut.vbs) dient hier in erster Linie der besseren Lesbarkeit.
Bitte warten ..
Mitglied: Xaero1982
09.04.2014 um 20:32 Uhr
Zitat von bastla:


Ansonsten: Wenn die Verknüpfung nicht erstellt wird, könnte das natürlich auch ganz einfach auf fehlende
(Schreib-)Rechte für "%allusersprofile%\desktop" zurückzuführen sein - der Batch sollte jedenfalls als
Admin ausgeführt werden ...

Grüße
bastla

Genau da sehe ich den Knackpunkt

Gruß
Bitte warten ..
Mitglied: einfachBernd
09.04.2014 um 22:09 Uhr
Hi @all,

Rechte passen da ich eben wenn ich den Teil nach %installpath% weglasse ja alles funktioniert... es happert definitv an der Thematik, dass hier mehrere Variablen mit leerzeichen nach /T: Probleme machen... i schau ma den ansatz von bastla nochmals an mit den vbs und den """ hoffe mal das klappt

danke für eure zeit und mühe
Bitte warten ..
Mitglied: Xaero1982
10.04.2014 um 00:14 Uhr
Moin,

also ich hab mal bissel rumgebastelt, aber wie man zu diesem Ergebnis kommt muss jemand anderes rausbekommen

1. Wenn du Office 2010 benutzt heißt der Parameter /wrkgrp
2. Das Ziel im Shortcut muss wie folgt aussehen:
01.
"C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE" "c:\Program Files\Statistik\statistik.accdb" /wrkgrp "c:\program files\statistik\statistik.mdw"
Man beachte wirklich die "". Ein umschließendes "" geht nicht.

So, das Problem ist folgendes:

01.
Shortcut.exe /F:"%ALLUSERSPROFILE%\Statistik.lnk" /A:C /T:"%ProgramFiles(x86)%\Microsoft Office\Office14\MSACCESS.EXE" /P:"c:\Program Files\Statistik\statistik.accdb /wrkgrp c:\program files\statistik\statistik.mdw" /W:"C:\program files\statistik"
Ist nur ein Test - deswegen andere Pfade. Dieser code ergibt letztlich nur folgendes:
01.
"C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE" c:\Program Files\Statistik\statistik.accdb /wrkgrp c:\program files\statistik\statistik.mdw
Das widerum funktioniert nicht. Wenn man im Code nach dem T: noch ein " und am Ende ein " setzt erkennt er die Leerzeichen nicht mehr.

Übrigens gibt es /P: für die Parameterangabe.

Aus meiner Sicht ist die Erstellung in dieser Form nicht möglich - selbst ohne Leerzeichen.
Bitte warten ..
Mitglied: Xaero1982
10.04.2014 um 17:19 Uhr
Immerhin gelöst und den Beitrag den ich als Link postet als Lösung markiert - so lieb ich es
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Echo Ausgabe ohne Variablenauflösung
gelöst Frage von bartek76Batch & Shell9 Kommentare

Hallo Gemeinde, habe eine simple Frage, auf die ich aber bis jetzt keine Antwort fand. Möchte per Batch den ...

Batch & Shell
ImgBurn Batch Problem
gelöst Frage von Nightowl71Batch & Shell5 Kommentare

hallo gemeinde, ich habe mal wieder probleme mit einer batchdatei :( folgendes habe ich gefunden, was nur zum teil ...

Batch & Shell
Grosses Variablen Problem ( Batch)
gelöst Frage von clragonBatch & Shell30 Kommentare

Hey Leute. Ich bin auf ein doofes problem gestossen als ich durch variablen loopen wollte, da ich mir die ...

Batch & Shell
Problem mit Batch - starten einer Exe
Frage von jan99Batch & Shell2 Kommentare

Moin ! ich habe auf einem Server eine EXE liegen die immer lokal aktuell gestartet werden soll und dafür ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 2 StundenVerschlüsselung & Zertifikate

Interessant SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...