Přidání příkazu MOVE do nižšího DOSu I. (soubor MV1.BAT)

2. ledna 2012 v 16:51 | PiSoft |  Exsto
@ECHO OFF
if NOT EXIST C:\GETKEY.COM goto Setup
if %1-==- goto Help
REM VARS:
REM MVOTMP - contains users action selection
REM MBKD - contains backup/log folder path
REM MBKF - contains backup log file path
IF EXIST %2\%1 GOTO UserActionOnFileExist
:UserFinished
IF EXIST %2\%1 GOTO OnExist
GOTO OnNoExist
:OnExist
if %mvotmp%==skip1 goto Fin
if %mvotmp%==ovw1 goto DoThisFile
if %mvotmp%==abort goto Fin
if %mvotmp%==skipA goto Fin
if %mvotmp%==backup goto BackupAllFiles
if %mvotmp%==nobackup goto DoThisFile
goto SetError
:BackupAllFiles
if NOT "%MBKF%"=="" goto SkipFolderCreation
echo Creating backup folders ...
set MBKD=MVBAK$$$.TMP
set MBKF=%MBKD%\info.txt
set MBDT=$GETD-T$.TMP
mkdir %MBKD%
echo ABC>%MBDT%
echo * * *>>%MBKF%
echo NEXT LOG ENTRY:>>%MBKF%
echo ------------------------------------------------>>%MBKF%
dir %MBDT%>>%MBKF%
echo ------------------------------------------------>>%MBKF%
del %MBDT%
set MBDT=
:SkipFolderCreation
echo Logged operation:
echo EXIST %2\%1>>%MBKF%
echo BAK %MBKD%\%1>>%MBKF%
echo Backing up target file for "%1"
copy %2\%1 %MBKD%\%1>>%MBKF%
echo DEL %2\%1>>%MBKF%
echo Deleting target file for "%1"
del %2\%1>>%MBKF%
goto OnNoExist
:DoThisFile
echo Deleting target file for "%1" without backup
del %2\%1>NUL
:OnNoExist
echo Moving file "%1" to folder "%2"
copy %1 %2\%1>NUL
del %1>NUL
echo FILE DONE
goto Fin

:UserActionOnFileExist
if -%mvotmp%==-abort goto Fin
if -%mvotmp%==-skipA goto Skipped
if -%mvotmp%==-backup goto UserFinished
if -%mvotmp%==-nobackup goto UserFinished
echo File called %1 already exists in destination folder %2
echo "Y" to OVERWRITE this file
echo "N" to SKIP moving THIS file
echo "S" to SKIP ALL existing from moving
echo "B" to DO ALL but keep BACKUPs
echo "X" to DO ALL and NO MORE QUESTIONS
echo "A" to ABORT whole action
set mvotmp=
:ReadKey
getkey.com
if errorlevel 89 set mvotmp=ovw1
if not "%mvotmp%"=="" goto KeyCorrect
if errorlevel 88 set mvotmp=nobackup
if not "%mvotmp%"=="" goto KeyCorrect
if errorlevel 83 set mvotmp=skipA
if not "%mvotmp%"=="" goto KeyCorrect
if errorlevel 78 set mvotmp=skip1
if not "%mvotmp%"=="" goto KeyCorrect
if errorlevel 66 set mvotmp=backup
if not "%mvotmp%"=="" goto KeyCorrect
if errorlevel 65 set mvotmp=abort
if "%mvotmp%"=="abort" goto KeyCorrect
goto ReadKey
:KeyCorrect
echo ...
goto UserFinished

:SetError
echo Unknown error (mvotmp=%mvotmp%)
echo Param 1: %1
echo Param 1: %2
goto Fin
:Skipped
echo File %1 SKIPPED
goto Fin
:Help
echo MV1 can be used itself as command for moving single file,
echo as it contains all checks and capabilities exposed through
echo MOVE.BAT! piSoft-konikula-2011
echo - close -
pause>nul
goto eof
:Setup
echo Installing...
echo [CREATE] C:\GETKEY.COM
if EXIST C:\GETKEY.DBG goto SetupStd
if EXIST GETKEY.DBG goto SetupPro
goto SetupErr
:SetupStd
debug C:\GETKEY.COM<C:\GETKEY.DBG
goto SetupOK
:SetupPro
debug C:\GETKEY.COM<GETKEY.DBG
copy GETKEY.DBG C:\GETKEY.DBG>NUL
del GETKEY.DBG
:SetupOK
echo MOVE is INSTALLED! -gw
echo You can return to your interrupted MOVE operation ..
echo -close-
pause>nul
goto eof
:SetupErr
echo [ERROR] GETKEY.DBG is needed to continue!
echo Cannot install GETKEY.COM
echo - next -
pause>nul
echo Details (non technicians can skip this):
echo To use MV1.BAT and MOVE.BAT you must have 27 bytes of machine
echo code in file C:\GETKEY.COM. This file is expected to wait for
echo user input (single key) , to convert small characters to big,
echo and to return users choice (number 65+) into ERRORLEVEL (AH).
echo In original setup disk of MOVE.BAT there should be file
echo GETKEY.DBG, which is needed by this setup cycle to produce
echo C:\GETKEY.COM automatically.
echo - next -
pause>nul
echo Alternative solution:
echo I prepared file GETKEY.D--. Your only job now is to deliver
echo single empty line before RCX line. When finished, just rename
echo GETKEY.D-- to GETKEY.DBG, and restart this setup.
echo - next -
pause>nul

echo ----------- GETKEY.DBG RECEIPT -----------
echo a
echo a >GETKEY.D--
echo MOV AX,0C07
echo MOV AX,0C07 >>GETKEY.D--
echo INT 21
echo INT 21 >>GETKEY.D--
echo MOV AH,61
echo MOV AH,61 >>GETKEY.D--
echo CMP AL,AH
echo CMP AL,AH >>GETKEY.D--
echo JL 010F
echo JL 010F >>GETKEY.D--
echo MOV AH,20
echo MOV AH,20 >>GETKEY.D--
echo SUB AL,AH
echo SUB AL,AH >>GETKEY.D--
echo MOV AH,02
echo MOV AH,02 >>GETKEY.D--
echo MOV DL,AL
echo MOV DL,AL >>GETKEY.D--
echo INT 21
echo INT 21 >>GETKEY.D--
echo MOV AH,AL
echo MOV AH,AL >>GETKEY.D--
echo MOV AH,4C
echo MOV AH,4C >>GETKEY.D--
echo INT 21
echo INT 21 >>GETKEY.D--
echo { { HERE COMES YOUR EMPTY LINE } }
echo rcx
echo rcx >>GETKEY.D--
echo 1B
echo 1B >>GETKEY.D--
echo w
echo w >>GETKEY.D--
echo q
echo q >>GETKEY.D--
echo ----------- END OF RECEIPT -----------
echo Hope this helps and thanks for your time and patience!
echo konikula@post.cz as PiSoft
echo - close -
pause>nul
goto eof
:Fin
if -%mvotmp%==-skip1 set MVOTMP=skipped
if -%mvotmp%==-ovw1 set MVOTMP=overwritten
if NOT "%3"=="*!KEEP" set MVOTMP=
if NOT "%3"=="*!KEEP" set MBKD=
if NOT "%3"=="*!KEEP" set MBKF=
:eof
 

Nový komentář

Vezměte na vědomí, že diskuse je moderována. Než se nový komentář začne zobrazovat, musí jej nejdříve schválit autor blogu.

Přihlásit se
  Ještě nemáte vlastní web? Můžete si jej zdarma založit na Blog.cz.