Bat Datei mit Auswahl

Hier dürfen auch unregistrierte Besucher posten.
Antworten
sigrid

Bat Datei mit Auswahl

Beitrag von sigrid »

Guten Morgen zusammen,
ich habe eine BAT Datei zum kopieren der Dateien.
zum Beispiel:
roboCopy d:\_Test\###_Sicherung_Sigi\ e:\_Neu\sigi /MIR
das funktioiniert.
Gibt es eine Möglichkeit die Zeile mit einer Auswahlbox zum Beispiel von d:\...
zu ... ähnlich wie beim Explorer zu installieren.
So entfällt das Schreiben sondern man wählt diese aus.

mfg sigrid
Benutzeravatar
schubl
CONFIG.SYS-Autor
Beiträge: 271
Registriert: So 17. Mär 2019, 19:14

Re: Bat Datei mit Auswahl

Beitrag von schubl »

Mit choice kann man sowas machen...
https://en.wikipedia.org/wiki/Choice_(command)

schubl
Zuletzt geändert von schubl am Di 8. Okt 2019, 19:44, insgesamt 1-mal geändert.
Soviel Retro und nur sowenig Zeit... laufender WIP...
8086, 286, 386, 486, P1, P2, P3, P4 und dann noch Amiga, Atari, C64/128,...
sigrid

Re: Bat Datei mit Auswahl

Beitrag von sigrid »

Hallo Schuble,
bin Anfänger, hast Du ein Beispiel ?
mfg
sigrid
Osmodia

Re: Bat Datei mit Auswahl

Beitrag von Osmodia »

Auf der Wikipedia-Seite ist doch ein Beispiel?!
Benutzeravatar
schubl
CONFIG.SYS-Autor
Beiträge: 271
Registriert: So 17. Mär 2019, 19:14

Re: Bat Datei mit Auswahl

Beitrag von schubl »

sigrid hat geschrieben:Hallo schubl,
bin Anfänger, hast Du ein Beispiel ?
Ehrlicherweise hab ich zuerst nicht ganz genau gelesen, was Du wolltest, und die Angabe ist auch etwas ... mager... ;-)
Ich war auch zu sehr auf DOS fixiert...
Aber ich denke jetzt hab ichs verstanden...
Da Du mit Robocopy hantierst, gehe ich von Windows aus, wenn Du da ne GUI willst, such Dir eine von den hier gelisteten aus: https://www.windowspro.de/wolfgang-somm ... r-robocopy

Wenns nur 2-3 verschiedene, immer gleiche Pfade sind, könnte man das auch so lösen:

Code: Alles auswählen

@echo off
echo Quelle:
echo 1 = d:\_Test\1_Sicherung_Sigi\
echo 2 = d:\_Test\2_Sicherung_Sigi\
echo 3 = d:\_Test\3_Sicherung_Sigi\
choice /c:123
set source=d:\_Test\%errorlevel%_Sicherung_Sigi\
roboCopy %source% e:\_Neu\sigi /MIR
Wenn Die Pfade nicht mit 1,2 oder 3 beginnen, muss man halt mit if arbeiten...

Code: Alles auswählen

@echo off
echo Quelle:
echo 1 = d:\_Test\A_Sicherung_Sigi\
echo 2 = d:\_Test\B_Sicherung_Sigi\
echo 3 = d:\_Test\C_Sicherung_Sigi\
choice /c:123
if errorlevel 3 set source=d:\_Test\C_Sicherung_Sigi\
if errorlevel 2 set source=d:\_Test\B_Sicherung_Sigi\
if errorlevel 1 set source=d:\_Test\A_Sicherung_Sigi\
roboCopy %source% e:\_Neu\sigi /MIR
Bzw würd ichs dann noch mit ein paar Variablen und ner FOR-Schleife modularer und auch weniger fehleranfällig machen...
Oder überhaupt einfach mit mehreren CMDs, je nach Anforderung was Du jetzt wirklich brauchst...

schubl
Soviel Retro und nur sowenig Zeit... laufender WIP...
8086, 286, 386, 486, P1, P2, P3, P4 und dann noch Amiga, Atari, C64/128,...
Benutzeravatar
Phoenix
MemMaker-Benutzer
Beiträge: 80
Registriert: Do 3. Okt 2019, 06:37

Re: Bat Datei mit Auswahl

Beitrag von Phoenix »

Weis ned ob dir das weiter hilft, das is ne Backup Datei von mir, die listet in einem Verzichniss die Ordnerauf und gibt ein auswahlmenu welcher ordner kopiert weren soll.

Code: Alles auswählen

@ECHO OFF
CLS
:: VERSION 1.0.035
:: Location of Steam Apps
SET STEAM_FLD=%ProgramFiles(x86)%\Steam\steamapps


:: Location of 7z.exe
SET ZIP_APP=%ProgramFiles%\7-Zip\7z.exe
IF NOT EXIST "%ZIP_APP%" GOTO ZIP_ERROR


:: Procentual number of CPU threads
SET THREADS=75


:: 7zip default Compression options
:: DVD		-v4570000000b
:: CDR-74	-v681900000b
:: CDR-80	-v737200000b
SET /A CPU=%NUMBER_OF_PROCESSORS% * %THREADS% / 100
SET ZIP_OPT=-r -m9=lzma2 -t7z -mmt%CPU%


:: Backup Folder
SET BAK_DEST=F:\Steam-Backups
IF NOT EXIST "%BAK_DEST%" MD "%BAK_DEST%"

:: Kill Steam
:: net stop "Steam Client Service"
:: taskkill /T /F /IM steam.exe
CLS
GOTO :MENU_PEET

:MENU_PEET
CLS
ECHO/
ECHO Select a game by number and press return to Backup
ECHO/
CALL :SelectGame SelectedGame
CALL :AppManifest AppManifest
CALL :BACKUP
GOTO :EOF


:SelectGame returnVar
SETLOCAL EnableDelayedExpansion
:nextFolder
CD "%STEAM_FLD%\common"
   ECHO/
   SET I=0
   SET FOLDER[0]=..
   ECHO     0	- Exit
   ECHO/
   FOR /D %%D IN (*) DO (
      SET /A I+=1
      SET FOLDER[!I!]=%%D
      ECHO     !I!	- %%D
   )
   :getOption
   SET OPTION=0+
   SET OPENFOLDER=1
   ECHO/
   SET /P "OPTION=Enter the desired game: "
   IF "%OPTION:~-1%" EQU "+" (
      SET OPTION=%OPTION:~0,-1%
   ) ELSE (
      SET OPENFOLDER=
   )
   IF %OPTION% GTR %I% GOTO GETOPTION
   SET GAMENAME=!FOLDER[%OPTION%]!
IF DEFINED OPENFOLDER GOTO NEXTFOLDER
ENDLOCAL & SET %1=%GAMENAME%
GOTO :EOF

:AppManifest 
SETLOCAL EnableDelayedExpansion
FOR /f "tokens=*" %%a IN ('FINDSTR /i /m "%SelectedGame%" "%STEAM_FLD%\*.acf"') DO (
	SET ACF_FILE=%%a)
IF NOT DEFINED ACF_FILE GOTO :AppManErr
ENDLOCAL & SET %1=%ACF_FILE%
GOTO :EOF


:BACKUP
IF "%SelectedGame%"==".." EXIT
::IF EXIST "%BAK_DEST%\%SelectedGame%\%SelectedGame%.7z" (CLS
::	ECHO Backup of "%SelectedGame%" already exist.
::	DEL /P "%BAK_DEST%\%SelectedGame%\%SelectedGame%.7z")
:: Compress with Date and Time in Filename
:: "C:\Program Files\7-Zip\7z.exe" a %ZIP_OPT% "%BAK_DEST%\%SelectedGame%\%SelectedGame%_%date%-%time:~0,2%.%time:~3,2%.%time:~6,2%" "%AppManifest%" "%STEAM_FLD%\common\%SelectedGame%"
"%ZIP_APP%" u %ZIP_OPT% "%BAK_DEST%\%SelectedGame%" "%AppManifest%" "%STEAM_FLD%\common\%SelectedGame%"
ECHO 
PAUSE
GOTO :MENU_PEET

:ZIP_ERROR
ECHO ERROR: Cant locate 7z.exe
PAUSE
EXIT

:AppManErr
ECHO ERROR: Cant detect AppManifest
PAUSE
EXIT
sigrid

Re: Bat Datei mit Auswahl

Beitrag von sigrid »

Hallo zusammen,
erst mal DANKE für die bisherige Unterstützung.
Ich habe jetzt mal RichCopy installiert.
Das einzuge Problem, ich finde keine Einstellung für das kompl. Verzeichnis, z.B.
mit 10 Unterverzeichnisse, so auch zu kopieren.
Daher, 1 Verzeichnis kopiert mit den 10 Unterverzeichnisse.

mfg
sigrid
Antworten