Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Pfad-Variablen verknüpfen bzw. zusammenführen

Frage Entwicklung Batch & Shell

Mitglied: bipede

bipede (Level 1) - Jetzt verbinden

14.11.2008, aktualisiert 15.11.2008, 18097 Aufrufe, 7 Kommentare

Hallo! Ich möchte zwei Variablen, die jeweils einen Teil eines Pfades beinhalten, zu einem neuen Pfad zusammenführen.

Hier mal ein Beispiel:

01.
set var1="C:\" 
02.
set var2="test.pdf" 
03.
 
04.
echo %var1%_%var2% 
05.
 
06.
pause
Das Ergebnis sollte so aussehen:

01.
"C:\test.pdf"
Sieht aber so aus (Problem sind die ""):

01.
"C:\""test.pdf"
Hintergrund:
Eine bestimmte Software (LEd) übergibt bestimmte Pfadvariablen so:

01.
@rem There are 3 parameters passed  to this batch: 
02.
@rem     %1 - <MAINFILEDIR> 
03.
@rem     %2 - <MAINFILENAME> 
04.
@rem     %3 - <MAINFILEDISK>
Und ich möchte den Adobe Reader aufrufen und ihm dabei den Pfad zur Datei übergeben, so in etwa:

01.
cd C:\Programme\Adobe\Reader 9.0\Reader 
02.
AcroRd32.exe %1%2
Beste Grüße
manu
Mitglied: 51705
14.11.2008 um 21:27 Uhr
Hallo,

probier doch mal:

01.
set "var1=C:\" 
02.
set "var2=test.pdf"
wenn das nicht funktioniert, warte auf bastla.

Grüße, Steffen
Bitte warten ..
Mitglied: bastla
14.11.2008 um 21:59 Uhr
@smerlin
Das würde so funktionieren ...

... wenn aber die Pfadbestandteile ohnehin als Parameter ankommen, dann einfach:
"C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe" "%~1%~2"
Grüße
bastla
Bitte warten ..
Mitglied: bipede
15.11.2008 um 14:39 Uhr
Hallo und vielen Dank.

Habe es jetzt so gemacht:
01.
cd C:\Programme\Adobe\Reader 9.0\Reader 
02.
AcroRd32.exe "%~1\%~2.pdf"
Dabei sind die Variablen beispielsweise wie folgt belegt (diese werden beim Aufruf übergeben):
01.
%1 = "C:\Dokumente und Einstellungen\kuehner\Desktop\test" 
02.
%2 = "New"
Und
01.
"%~1\%~2.pdf"
liefert dann:
01.
"C:\Dokumente und Einstellungen\kuehner\Desktop\test\New.pdf"
Erlaubt mir eine Nachfrage: Werden dann mit
01.
"%~1%~2"
quasi Strings zusammengebaut?!

LEd ist übrigens ein LaTeX-Editor und ich wollte erreichen, dann nach dem Komplilieren automatisch das PDF geöffnet wird. Saugeil wäre es natürlich, wenn sich das batch merken würde, welche Seite zuvor geöffnet war und dann wieder dei gleiche Seite öffnet - aber das ist zuviel.

Grüße!
manu
Bitte warten ..
Mitglied: bastla
15.11.2008 um 14:51 Uhr
Hallo bipede!

Werden dann mit
"%~1%~2"
quasi Strings zusammengebaut?!
Jein; ein explizites "concat" benötigt Batch nicht - es können ganz einfach Variable und Konstante (wie Du es ja durch den Zusatz von ".pdf" schon selbst gemacht hast) ohne Weiteres zusammengeschrieben werden - durch die Anführungszeichen "zusammengebaut" (wenn Du das so nennen möchtest ) werden die einzelnen Teile wegen der Möglichkeit, dass Name oder Pfad Leerzeichen enthalten könnten.
Saugeil wäre es natürlich, wenn sich das batch merken würde, welche Seite zuvor geöffnet war und dann wieder dei gleiche Seite öffnet - aber das ist zuviel.
Wenn die Seitenzahl an Batch übergeben werden kann, wäre auch das "Merken" kein Problem - dazu könntest du einfach
set Seite>D:\Seitenzahl.txt
zum Zwischenspeichern der Variablen %Seite% bis zum nächsten Batchlauf und
for /f "delims=" %%i in (D:\Seitenzahl.txt) do set "%%i"
zum Einlesen verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: bipede
15.11.2008 um 15:03 Uhr
Hallo und abermals Danke!

Ich möchte die Hilfe nicht überstrapazieren, da ich ja nichts im Gegenzug bieten kann. In der Saugeil-Bemerkung habe ich mich unklar ausgedrückt - hier ein weiterer Versuch:

1. Ich kompiliere zum ersten Mal das TeX-Dokument und danach wird das Dokument im Adobe Reader geöffnet.
2. Ich ändere was im TeX-Code und kompiliere erneut.
3. Natürlich habe ich zuvor vergessen, den Adobe Reader zu schließen und TeX kann das PDF nicht erstellen.

Traum:

- Das Batch schließt den Reader und merkt sich die aktuelle Seite - dazu muss man mit dem Reader kommunizieren.
- Dann kompiliere ich das LaTeX-Dokument und öffne das PDF erneut und übergebe dabei dem Adobe Reader die zuvor geöffnete Seite als Parameter

01.
@rem You can put here any commands you want - this batch file can be executed from LEd's toolbar 
02.
@rem There are 3 parameters passed  to this batch: 
03.
@rem     %1 - <MAINFILEDIR> 
04.
@rem     %2 - <MAINFILENAME> 
05.
@rem     %3 - <MAINFILEDISK> 
06.
@rem You can also define in tex_cmd.gd file some additional parameters to be passed to this batch file. 
07.
 
08.
call "%PROGRAMFILES%\LEd\batches\bibtex.bat" %1 %2 %3 
09.
call "%PROGRAMFILES%\LEd\batches\pdflatex.bat" %1 %2 %3  
10.
call "%PROGRAMFILES%\LEd\batches\myAcrobat.bat" %1 %2 %3 
myAcrobat.bat:
01.
cd C:\Programme\Adobe\Reader 9.0\Reader 
02.
echo "%~1\%~2.pdf" 
03.
AcroRd32.exe "%~1\%~2.pdf"
Aber wie gesagt - das ist zuviel verlangt. So ist es auch schon super!

Es wäre zumindest nochmal besser, wenn ich mit dem Batch den Reader zuvor beenden könnte:

01.
@rem You can put here any commands you want - this batch file can be executed from LEd's toolbar 
02.
@rem There are 3 parameters passed  to this batch: 
03.
@rem     %1 - <MAINFILEDIR> 
04.
@rem     %2 - <MAINFILENAME> 
05.
@rem     %3 - <MAINFILEDISK> 
06.
@rem You can also define in tex_cmd.gd file some additional parameters to be passed to this batch file. 
07.
 
08.
-> Reader beenden bevor kompiliert wird.... 
09.
 
10.
call "%PROGRAMFILES%\LEd\batches\bibtex.bat" %1 %2 %3 
11.
call "%PROGRAMFILES%\LEd\batches\pdflatex.bat" %1 %2 %3  
12.
call "%PROGRAMFILES%\LEd\batches\myAcrobat.bat" %1 %2 %3 
Grüße
manu
Bitte warten ..
Mitglied: bastla
15.11.2008 um 15:18 Uhr
Hallo bipede!
dazu muss man mit dem Reader kommunizieren.
... was native Batch IMHO nicht kann (deshalb auch meine Einschränkung oben: Wenn die Seitenzahl an Batch übergeben werden kann) ...

Es wäre zumindest nochmal besser, wenn ich mit dem Batch den Reader zuvor beenden könnte:
Soferne "taskkill" verfügbar ist (ab XP):
taskkill /F /IM AcroRd32.exe
Den Namen des Prozesses kannst Du im Fall des Falles über "tasklist" herausfinden.

Grüße
bastla
Bitte warten ..
Mitglied: bipede
15.11.2008 um 15:20 Uhr
Danke bastla - funktioniert super!
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows Server
Jnlp Endungen mit Java automatisch verknüpfen über GPO (10)

Frage von staybb zum Thema Windows Server ...

Windows Userverwaltung
Servergespeichertes Profil - Pfad ausfindig machen (6)

Frage von staybb zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...