PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Batch] nur eine zeile ausgeben (for)


zerobit
27.04.2009, 20:32
hallo... war lang nicht mehr hier... ich leg auch gleich los:

ich schreibe mir ein simples Dateitypen-Regestrierungs-Script
und muss dabei auf die Eigenarten der Programme rücksicht nehen...
Java ist so ein fall...

hier erstmal der Code-Schnipsel um den es mir geht...
:JAR
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" cd /d "C:\%ProgramFiles(x86)%\Java"
if not "%PROCESSOR_ARCHITECTURE%"=="AMD64" cd /d "C:\%ProgramFiles%\Java"
for /F "delims=" %%a in ('dir * /B /AD /O-D') do cd /d "%CD%\%%a\bin"
set xFileType=jarfile
set xRegType=open.SuRun
set xRegName=SuRun: Öffnen
REG ADD HKCR\%xFileType%\shell\%xRegType% /f
REG ADD HKCR\%xFileType%\shell\%xRegType% /ve /t REG_SZ /d "%xRegName%" /f
REG ADD HKCR\%xFileType%\shell\%xRegType%\command /f
REG ADD HKCR\%xFileType%\shell\%xRegType%\command /ve /t REG_SZ /d "SuRun.exe "%CD%\javaw.exe" -jar \"%%1\" %%*" /f

nach jedem Versions-Update ändert sich der Pfad
und die alten Verzeichnisse bleiben auch noch bestehen

mit der aktuellen For-Schleife gehe ich alle verzeichnisse duch, bis ich beim aktuellsten Verzeichnis angekommen bin
for /F "delims=" %%a in ('dir * /B /AD /O-D') do cd /d "%CD%\%%a\bin"

ich würde gern diesen Befehl so abändern,
dass ich nur eine zeile ausge, welche das aktuellste Verzeichnis anzeigt wird...


German
05.05.2009, 02:25
Wie wäre es mit

for /F "delims=" %%a in ('dir * /B /A:D /O:D') do set "aktuell=%%a"

cd "%aktuell%\bin"

Wenn ich nicht verkehrt denke wird jetzt (erst mal sinnloserweise) der Variablen %aktuell% alle nicht aktuellen Verzeichnisse zugewiesen, bis das letzte, also das aktuelle Verzeichnis erreicht ist. Somit ist die FOR-Schleife abgearbeitet und in %aktuell% bleibt der letzte Wert stehen.
Die Option /D solltest du an dieser Stelle für den CD-Befehl nicht brauchen, da du das Laufwerk nicht wechselst.

zerobit
07.05.2009, 20:53
danke. schön... .
ich sollte wirklich mehr mit 'SET' arbeiten :P

die sache mit der option /D hab ich mir generell angewöhnt,
so brauch ich nicht mehr nachdenken von wo ich das skript starte...
bei mir ist alles (weitestgehend) relativ... :P