Bat Datei mit Auswahl

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:-) ;-) 8-) :-( :arrow: :idea: :like: :keen:
Mehr Smilies anzeigen

BBCode ist ausgeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Bat Datei mit Auswahl

Re: Bat Datei mit Auswahl

von sigrid » Mi 9. Okt 2019, 13:43

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

Re: Bat Datei mit Auswahl

von Phoenix » Di 8. Okt 2019, 21:18

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

Re: Bat Datei mit Auswahl

von schubl » Di 8. Okt 2019, 20:11

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

Re: Bat Datei mit Auswahl

von Osmodia » Di 8. Okt 2019, 16:56

Auf der Wikipedia-Seite ist doch ein Beispiel?!

Re: Bat Datei mit Auswahl

von sigrid » Di 8. Okt 2019, 16:16

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

Re: Bat Datei mit Auswahl

von schubl » Di 8. Okt 2019, 15:45

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

schubl

Bat Datei mit Auswahl

von sigrid » Di 8. Okt 2019, 10:12

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

Nach oben