Accedi

Rubrica.bat

Semplice esercizio sulla shell di windows che contempla comandi base e di facile utilizzo.

TRACCIA

Crea un file batch denominato “rubrica.bat” che permetta di gestire un elenco di contatti di persone all’interno di una rubrica. La rubrica dovrà essere costituita da un file di testo con i seguenti campi, per ciascun nominativo:

cognome     nome     indirizzo     città     telefono

Il file batch dovrà visualizzare il seguente menu, dove a seconda della scelta effettuata dell’utente dovrà corrispondere una particolare azione, così come specificato:

Aggiungi contatto

  1. Visualizza rubrica
  2. Cerca in rubrica
  3. Ordina contatti
  4. Elimina contatto
  5. Svuota rubrica
  6. Effettua copia di backup della rubrica
  7. Ripristina rubrica da backup
  8. Esci

Realizzare il file batch e scrivere una relazione che documenti nel dettaglio le scelte implementative e descriva il significato dei comandi utilizzati.

COMANDI/CODICI

@echo off
setlocal enabledelayedexpansion
setlocal
chcp 65001
set righe=0
set count=0
set count2=0
set tempo=0
set scelta=0
set backupDir=0
set nome_rubrica=0
set cognome_rubrica=0
set indirizzo_rubrica=0
set citta_rubrica=0
set telefono_rubrica=0
set controllo=0
set nome_da_cercare=0
if NOT exist rubrica (
  md rubrica\backup
  md rubrica\elenco\categorie\citta
  md rubrica\elenco\categorie\cognome
  md rubrica\elenco\categorie\indirizzo
  md rubrica\elenco\categorie\nome
  md rubrica\elenco\categorie\telefono
  md rubrica\elenco\cestino\categorie\citta
  md rubrica\elenco\cestino\categorie\cognome
  md rubrica\elenco\cestino\categorie\indirizzo
  md rubrica\elenco\cestino\categorie\nome
  md rubrica\elenco\cestino\categorie\telefono
  md rubrica\elenco\cestino\unico
  md rubrica\elenco\unico
  md rubrica\interfaccia

type nul > rubrica\elenco\categorie\citta\citta_salvato.txt
type nul > rubrica\elenco\categorie\citta\citta.txt
type nul > rubrica\elenco\categorie\cognome\cognome_salvato.txt
type nul > rubrica\elenco\categorie\cognome\cognome.txt
type nul > rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt
type nul > rubrica\elenco\categorie\indirizzo\indirizzo.txt
type nul > rubrica\elenco\categorie\nome\nome_salvato.txt
type nul > rubrica\elenco\categorie\nome\nome.txt
type nul > rubrica\elenco\categorie\telefono\telefono_salvato.txt
type nul > rubrica\elenco\categorie\telefono\telefono.txt
type nul > rubrica\elenco\cestino\categorie\citta\citta_salvato.txt
type nul > rubrica\elenco\cestino\categorie\citta\citta.txt
type nul > rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt
type nul > rubrica\elenco\cestino\categorie\cognome\cognome.txt
type nul > rubrica\elenco\cestino\categorie\indirizzo\indirizzo_salvato.txt
type nul > rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt
type nul > rubrica\elenco\cestino\categorie\nome\nome_salvato.txt
type nul > rubrica\elenco\cestino\categorie\nome\nome.txt
type nul > rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt
type nul > rubrica\elenco\cestino\categorie\telefono\telefono.txt
type nul > rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt
type nul > rubrica\elenco\cestino\unico\rubrica.txt
type nul > rubrica\elenco\unico\rubrica_cerca.txt
type nul > rubrica\elenco\unico\rubrica.txt
type nul > rubrica\elenco\unico\rubrica_nomi_salvati.txt
type nul > rubrica\elenco\unico\rubrica_ordinata.txt

  echo | set /p=.       Nome        â”‚      Cognome       │     Indirizzo      â”‚       Città        â”‚      Telefono>> rubrica\interfaccia\header_elenco.txt
  echo 1. Ripristina da backup >> rubrica\interfaccia\menu_backup.txt
  echo 2. Effettua backup >> rubrica\interfaccia\menu_backup.txt
  echo 3. Elimina backup >> rubrica\interfaccia\menu_backup.txt
  echo 4. Indietro >> rubrica\interfaccia\menu_backup.txt
  echo 1. Cerca un altra parola chiave >> rubrica\interfaccia\menu_cerca.txt
  echo 2. Indietro >> rubrica\interfaccia\menu_cerca.txt
  echo 1. Visualizza Cestino >> rubrica\interfaccia\menu_cestino.txt
  echo 2. Riprista contatto >> rubrica\interfaccia\menu_cestino.txt
  echo 3. Svuota cestino >> rubrica\interfaccia\menu_cestino.txt
  echo 4. indietro >> rubrica\interfaccia\menu_cestino.txt
  echo 1. Sposta nel cestino con numero riga >> rubrica\interfaccia\menu_elimina.txt
  echo 2. Sposta nel cestino con Nome e Cognome >> rubrica\interfaccia\menu_elimina.txt
  echo 3. Cestino >> rubrica\interfaccia\menu_elimina.txt
  echo 4. Indietro >> rubrica\interfaccia\menu_elimina.txt
  echo 1. Visualizza contatti >> rubrica\interfaccia\menu_principale.txt
  echo 2. Aggiungi contatto >> rubrica\interfaccia\menu_principale.txt
  echo 3. Cerca >> rubrica\interfaccia\menu_principale.txt
  echo 4. Elimina contatto >> rubrica\interfaccia\menu_principale.txt
  echo 5. Elimina Rubrica >> rubrica\interfaccia\menu_principale.txt
  echo 6. Backup >> rubrica\interfaccia\menu_principale.txt
  echo 7. Esci >> rubrica\interfaccia\menu_principale.txt
  echo    Ordina per >> rubrica\interfaccia\menu_visualizza.txt
  echo 1. Nome A → Z >> rubrica\interfaccia\menu_visualizza.txt
  echo 2. Nome Z ← A >> rubrica\interfaccia\menu_visualizza.txt
  echo 3. Cognome A → Z >> rubrica\interfaccia\menu_visualizza.txt
  echo 4. Cognome Z ← A >> rubrica\interfaccia\menu_visualizza.txt
  echo 5. Indirizzo A → Z >> rubrica\interfaccia\menu_visualizza.txt
  echo 6. Indirizzo Z ← A >> rubrica\interfaccia\menu_visualizza.txt
  echo 7. Città A → Z >> rubrica\interfaccia\menu_visualizza.txt
  echo 8. Città Z ← A >> rubrica\interfaccia\menu_visualizza.txt
  echo 9. Indietro >> rubrica\interfaccia\menu_visualizza.txt
  type nul >> rubrica\interfaccia\nome_backup.txt

  echo|set /p="│">>rubrica\interfaccia\simbolo_pipe.txt

  for /f %%A in ('copy /Z "%~dpf0" nul') do set EOL=%%A^


  <nul set /p "=x!EOL! " >temp.tmp
  findstr /v $ temp.tmp >rubrica\interfaccia\spazio_vuoto.txt
  del temp.tmp
)
::---------------------------------------------------------------------------------------------------------
:menu_principale
  type rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  cls
  type rubrica\interfaccia\menu_principale.txt
  echo,
  CHOICE /N /C:1234567 /M "Inserisci una scelta"
  if %ERRORLEVEL%==1 goto visualizza_contatti
  if %ERRORLEVEL%==2 goto aggiungi_contatto
  if %ERRORLEVEL%==3 goto cerca
  if %ERRORLEVEL%==4 goto elimina_contatto
  if %ERRORLEVEL%==5 goto elimina_rubrica
  if %ERRORLEVEL%==6 goto backup
  if %ERRORLEVEL%==7 goto esci
::---------------------------------------------------------------------------------------------------------
:visualizza_contatti
  set /a count=0
  for /f %%i in (rubrica\elenco\unico\rubrica.txt) do (
    set /a count=count+1
  )
  if %count% EQU 0 (
    for /l %%i in (3,-1,1) do (
      cls
      echo Nessun Nome in rubrica attendi [%%i] secondi
      timeout 1 > nul
    )
    goto menu_principale
  )
  cls
  type rubrica\interfaccia\header_elenco.txt
  echo,
  type rubrica\elenco\unico\rubrica_ordinata.txt
  echo,
  type rubrica\interfaccia\menu_visualizza.txt
  echo,
  CHOICE /N /C:123456789 /M "Inserisci una scelta"
  if %ERRORLEVEL%==1 goto ordina_per_nome
  if %ERRORLEVEL%==2 goto ordina_per_nome_revers
  if %ERRORLEVEL%==3 goto ordina_per_cognome
  if %ERRORLEVEL%==4 goto ordina_per_cognome_revers
  if %ERRORLEVEL%==5 goto ordina_per_indirizzo
  if %ERRORLEVEL%==6 goto ordina_per_indirizzo_revers
  if %ERRORLEVEL%==7 goto ordina_per_citta
  if %ERRORLEVEL%==8 goto ordina_per_citta_revers
  if %ERRORLEVEL%==9 goto indietro_menu_visualizza
::---------------------------------------------------------------------------------------------------------
:ordina_per_nome
  sort < rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  goto visualizza_contatti
::---------------------------------------------------------------------------------------------------------
:ordina_per_nome_revers
  sort /r < rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  goto visualizza_contatti
::---------------------------------------------------------------------------------------------------------
:ordina_per_cognome
  sort /+23 < rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  goto visualizza_contatti
::---------------------------------------------------------------------------------------------------------
:ordina_per_cognome_revers
  sort /+23 /r < rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  goto visualizza_contatti
::---------------------------------------------------------------------------------------------------------
:ordina_per_indirizzo
  sort /+44 < rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  goto visualizza_contatti
::---------------------------------------------------------------------------------------------------------
:ordina_per_indirizzo_revers
  sort /+44 /r < rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  goto visualizza_contatti
::---------------------------------------------------------------------------------------------------------
:ordina_per_citta
  sort /+65 < rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  goto visualizza_contatti
::---------------------------------------------------------------------------------------------------------
:ordina_per_citta_revers
  sort /+65 /r < rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_ordinata.txt
  goto visualizza_contatti
::---------------------------------------------------------------------------------------------------------
:indietro_menu_visualizza
  goto menu_principale
::---------------------------------------------------------------------------------------------------------
:aggiungi_contatto
  cls
  :ritorno_nome_rubrica
  cls
  set nome_rubrica=aaaaaaaaaaaaaaaaaaaaaa
  set /p nome_rubrica=Nome del contatto:
  call :strlen result nome_rubrica
  if %result% GEQ 20 goto ritorno_nome_rubrica
  if %result% LSS 1 goto ritorno_nome_rubrica
  call :strlen result nome_rubrica
  set /a tempo=18-result
  echo | set /p=%nome_rubrica% >> rubrica\elenco\categorie\nome\nome.txt
  echo | set /p=%nome_rubrica% >> rubrica\elenco\unico\rubrica.txt
  for /l %%i in (0,+1,%tempo%) do (
    type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\categorie\nome\nome.txt
    type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\unico\rubrica.txt
  )
  type rubrica\interfaccia\simbolo_pipe.txt >> rubrica\elenco\categorie\nome\nome.txt
  type rubrica\interfaccia\simbolo_pipe.txt >> rubrica\elenco\unico\rubrica.txt
  type rubrica\elenco\categorie\nome\nome.txt | echo;>> rubrica\elenco\categorie\nome\nome.txt
::---------------------------------------------------------------------------------------------------------
:ritorno_cognome_rubrica
  cls
  set cognome_rubrica=aaaaaaaaaaaaaaaaaaaaaa
  set /p cognome_rubrica=Cognome del contatto %nome_rubrica%:
  call :strlen result cognome_rubrica
  if %result% GEQ 20 goto ritorno_cognome_rubrica
  if %result% LSS 1 goto ritorno_cognome_rubrica
  call :strlen result cognome_rubrica
  set /a tempo=18-result
  echo | set /p=%cognome_rubrica% >> rubrica\elenco\categorie\cognome\cognome.txt
  echo | set /p=%cognome_rubrica% >> rubrica\elenco\unico\rubrica.txt
  for /l %%i in (0,+1,%tempo%) do (
    type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\categorie\cognome\cognome.txt
    type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\unico\rubrica.txt
  )
  type rubrica\interfaccia\simbolo_pipe.txt >> rubrica\elenco\categorie\cognome\cognome.txt
  type rubrica\interfaccia\simbolo_pipe.txt >> rubrica\elenco\unico\rubrica.txt
  type rubrica\elenco\categorie\cognome\cognome.txt | echo;>> rubrica\elenco\categorie\cognome\cognome.txt
::---------------------------------------------------------------------------------------------------------
:ritorno_indirizzo_rubrica
  cls
  set indirizzo_rubrica=aaaaaaaaaaaaaaaaaaaaaa
  set /p indirizzo_rubrica=Indirizzo del contatto %nome_rubrica% %cognome_rubrica%:
  call :strlen result indirizzo_rubrica
  if %result% GEQ 20 goto ritorno_indirizzo_rubrica
  if %result% LSS 1 goto ritorno_indirizzo_rubrica
  call :strlen result indirizzo_rubrica
  set /a tempo=18-result
  echo | set /p=%indirizzo_rubrica% >> rubrica\elenco\categorie\indirizzo\indirizzo.txt
  echo | set /p=%indirizzo_rubrica% >> rubrica\elenco\unico\rubrica.txt
  for /l %%i in (0,+1,%tempo%) do (
    type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\categorie\indirizzo\indirizzo.txt
    type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\unico\rubrica.txt
  )
  type rubrica\interfaccia\simbolo_pipe.txt >> rubrica\elenco\categorie\indirizzo\indirizzo.txt
  type rubrica\interfaccia\simbolo_pipe.txt >> rubrica\elenco\unico\rubrica.txt
  type rubrica\elenco\categorie\indirizzo\indirizzo.txt | echo;>> rubrica\elenco\categorie\indirizzo\indirizzo.txt
::---------------------------------------------------------------------------------------------------------
:ritorno_citta_rubrica
  cls
  set citta_rubrica=aaaaaaaaaaaaaaaaaaaaaa
  set /p citta_rubrica=Citta' del contatto %nome_rubrica% %cognome_rubrica%:
  call :strlen result citta_rubrica
  if %result% GEQ 20 goto ritorno_citta_rubrica
  if %result% LSS 1 goto ritorno_citta_rubrica
  call :strlen result citta_rubrica
  set /a tempo=18-result
  echo | set /p=%citta_rubrica% >> rubrica\elenco\categorie\citta\citta.txt
  echo | set /p=%citta_rubrica% >> rubrica\elenco\unico\rubrica.txt
  for /l %%i in (0,+1,%tempo%) do (
    type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\categorie\citta\citta.txt
    type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\unico\rubrica.txt
  )
  type rubrica\interfaccia\simbolo_pipe.txt >> rubrica\elenco\categorie\citta\citta.txt
  type rubrica\interfaccia\simbolo_pipe.txt >> rubrica\elenco\unico\rubrica.txt
  type rubrica\elenco\categorie\citta\citta.txt | echo; >> rubrica\elenco\categorie\citta\citta.txt
::---------------------------------------------------------------------------------------------------------
:controllo_telefono_rubrica
  :ritorno_telefono_rubrica
    cls
    set telefono_rubrica=aaaaaaaaaaaaaaaaaaaaaa
    set /p telefono_rubrica=Telefono del contatto %nome_rubrica% %cognome_rubrica%:
    call :strlen result telefono_rubrica
    if %result% GEQ 20 goto ritorno_telefono_rubrica
    if %result% LSS 1 goto ritorno_telefono_rubrica

  set /a controllo=telefono_rubrica
  if !controllo! EQU 0 (
    if !telefono_rubrica! EQU 0 (
      call :strlen result citta_rubrica
      set /a tempo=18-result
      echo | set /p=%telefono_rubrica% >> rubrica\elenco\categorie\telefono\telefono.txt
      echo | set /p=%telefono_rubrica% >> rubrica\elenco\unico\rubrica.txt
      for /l %%i in (0,+1,%tempo%) do (
        type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\categorie\telefono\telefono.txt
        type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\unico\rubrica.txt
      )
      type rubrica\elenco\categorie\telefono\telefono.txt | echo;>> rubrica\elenco\categorie\telefono\telefono.txt
    ) else (
        for /l %%i in (3,-1,1) do (
          echo Potrai reinserire l'input fra [%%i] secondi
          timeout 1 > nul
        )
        goto controllo_telefono_rubrica
      )
  ) else (
    call :strlen result telefono_rubrica
    set /a tempo=18-result
    echo | set /p=%telefono_rubrica% >> rubrica\elenco\categorie\telefono\telefono.txt
    echo | set /p=%telefono_rubrica% >> rubrica\elenco\unico\rubrica.txt
    for /l %%i in (0,+1,%tempo%) do (
      type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\categorie\telefono\telefono.txt
      type rubrica\interfaccia\spazio_vuoto.txt >> rubrica\elenco\unico\rubrica.txt
    )
    type rubrica\elenco\categorie\telefono\telefono.txt | echo; >> rubrica\elenco\categorie\telefono\telefono.txt
    type rubrica\elenco\unico\rubrica.txt | echo; >> rubrica\elenco\unico\rubrica.txt
  )
  for /l %%i in (3,-1,1) do (
    cls
    echo Salvaggio effettuato con successo [%%i] secondi
    timeout 1 > nul
  )
  goto menu_principale
::---------------------------------------------------------------------------------------------------------
:cerca
  set /a count=0
  for /f %%i in (rubrica\elenco\unico\rubrica.txt) do (
    set /a count=count+1
  )
  if %count% EQU 0 (
    for /l %%i in (3,-1,1) do (
      cls
      echo Nessun Nome in rubrica attendi [%%i] secondi
      timeout 1 > nul
    )
    goto menu_principale
  )
  set /a count=0
  for /f %%i in (rubrica\elenco\unico\rubrica.txt) do (
    set /a count=count+1
  )
  if %count% EQU 0 (
    for /l %%i in (3,-1,1) do (
      cls
      echo Nessun Nome in rubrica attendi [%%i] secondi
      timeout 1 > nul
    )
    goto menu_principale
  )
  cls
  type rubrica\interfaccia\header_elenco.txt
  echo;
  type rubrica\elenco\unico\rubrica.txt
  set /a nome_da_cercare=0
  set /p nome_da_cercare=Inserisci cosa cercare:
  find /i "%nome_da_cercare%" rubrica\elenco\unico\rubrica.txt > rubrica\elenco\unico\rubrica_cerca.txt
  cls
  type rubrica\interfaccia\header_elenco.txt
  echo;
  for /f "skip=2 tokens=*" %%i in (rubrica\elenco\unico\rubrica_cerca.txt) do (
    echo %%i
  )
  type rubrica\interfaccia\menu_cerca.txt
  echo;
  CHOICE /N /C:12 /M "Inserisci una scelta"
  if %ERRORLEVEL%==1 goto cerca
  if %ERRORLEVEL%==2 goto menu_principale
  PAUSE
  goto menu_principale
::---------------------------------------------------------------------------------------------------------
:elimina_contatto
  cls
  type rubrica\interfaccia\menu_elimina.txt
  echo;
  CHOICE /N /C:1234 /M "Inserisci una scelta"
  if %ERRORLEVEL%==1 goto elimina_riga
  if %ERRORLEVEL%==2 goto elimina_da_nome_e_cognome
  if %ERRORLEVEL%==3 goto cestino
  if %ERRORLEVEL%==4 goto menu_principale
::---------------------------------------------------------------------------------------------------------
:elimina_riga
  set /a count=0
  for /f %%i in (rubrica\elenco\unico\rubrica.txt) do (
    set /a count=count+1
  )
  if %count% EQU 0 (
    for /l %%i in (3,-1,1) do (
      cls
      echo Nessun Nome in rubrica attendi [%%i] secondi
      timeout 1 > nul
    )
    goto elimina_contatto
  )
  set /a count2=count
  cls
  if %count2% GTR 9 (
     type rubrica\interfaccia\spazio_vuoto.txt
  ) else (
    if %count2% GTR 99 (
       type rubrica\interfaccia\spazio_vuoto.txt type rubrica\interfaccia\spazio_vuoto.txt
    ) else (
      if %count2% GTR 999 (
         type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
      ) else (
         if %count2% GTR 9999 type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
      )
    )
  )
  echo | set /p=N
  type rubrica\interfaccia\spazio_vuoto.txt
  type rubrica\interfaccia\header_elenco.txt
  echo;
  set /a count=0
  for /f "tokens=*" %%i in (rubrica\elenco\unico\rubrica.txt) do (
    set /a count=!count! + 1
    if %count2% GTR 9 (
        if not !count! GTR 9 type rubrica\interfaccia\spazio_vuoto.txt
    ) else (
      if %count2% GTR 99 (
        if not !count! GTR 99 type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
      ) else (
        if %count2% GTR 999 ( if !count! GTR 999 type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
        ) else (
          if not %count2% GTR 9999 if !count! GTR 9999 type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
        )
      )
    )
    echo !count! %%i
  )
  set /a scelta=0
  set /p scelta=Inserisci la riga corrispondente:
  call :strlen result scelta
    if %scelta% GTR %count% (
      for /l %%i in (3,-1,1) do (
        cls
        echo Riga non presente sarai reinderizzato al menu precedente attendi [%%i] secondi
        timeout 1 > nul
      )
      goto elimina_contatto
    )
    if %scelta% LSS 1 (

      for /l %%i in (3,-1,1) do (
        cls
        echo Riga non presente sarai reinderizzato al menu precedente attendi [%%i] secondi
        timeout 1 > nul
      )
      goto elimina_contatto
    )
  set /a controllo=scelta
  if !controllo! EQU 0 (
    if !scelta! EQU 0 (
      set /a count=0
      type nul > rubrica\elenco\unico\rubrica_nomi_salvati.txt
      for /f "tokens=*" %%i in (rubrica\elenco\unico\rubrica.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\unico\rubrica_nomi_salvati.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\unico\rubrica.txt )
      )
      type rubrica\elenco\unico\rubrica_nomi_salvati.txt > rubrica\elenco\unico\rubrica.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\nome\nome_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\nome\nome.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\nome\nome_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\nome\nome.txt )
      )
      type rubrica\elenco\categorie\nome\nome_salvato.txt > rubrica\elenco\categorie\nome\nome.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\cognome\cognome_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\cognome\cognome.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\cognome\cognome_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\cognome\cognome.txt )
      )
      type rubrica\elenco\categorie\cognome\cognome_salvato.txt > rubrica\elenco\categorie\cognome\cognome.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\indirizzo\indirizzo.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt )
      )
      type rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt > rubrica\elenco\categorie\indirizzo\indirizzo.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\citta\citta_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\citta\citta.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\citta\citta_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\citta\citta.txt )
      )
      type rubrica\elenco\categorie\citta\citta_salvato.txt > rubrica\elenco\categorie\citta\citta.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\telefono\telefono_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\telefono\telefono.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\telefono\telefono_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\telefono\telefono.txt )
      )
      type rubrica\elenco\categorie\telefono\telefono_salvato.txt > rubrica\elenco\categorie\telefono\telefono.txt
      ) else (
          for /l %%i in (3,-1,1) do (
            cls
            echo Riga non presente sarai reinderizzato al menu attendi [%%i] secondi
            timeout 1 > nul
          )
          goto elimina_contatto
        )
  ) else (
      set /a count=0
      type nul > rubrica\elenco\unico\rubrica_nomi_salvati.txt
      for /f "tokens=*" %%i in (rubrica\elenco\unico\rubrica.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\unico\rubrica_nomi_salvati.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\unico\rubrica.txt )
      )
      type rubrica\elenco\unico\rubrica_nomi_salvati.txt > rubrica\elenco\unico\rubrica.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\nome\nome_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\nome\nome.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\nome\nome_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\nome\nome.txt )
      )
      type rubrica\elenco\categorie\nome\nome_salvato.txt > rubrica\elenco\categorie\nome\nome.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\cognome\cognome_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\cognome\cognome.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\cognome\cognome_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\cognome\cognome.txt )
      )
      type rubrica\elenco\categorie\cognome\cognome_salvato.txt > rubrica\elenco\categorie\cognome\cognome.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\indirizzo\indirizzo.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt )
      )
      type rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt > rubrica\elenco\categorie\indirizzo\indirizzo.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\citta\citta_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\citta\citta.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\citta\citta_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\citta\citta.txt )
      )
      type rubrica\elenco\categorie\citta\citta_salvato.txt > rubrica\elenco\categorie\citta\citta.txt
      set /a count=0
      type nul > rubrica\elenco\categorie\telefono\telefono_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\categorie\telefono\telefono.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\telefono\telefono_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\telefono\telefono.txt )
      )
      type rubrica\elenco\categorie\telefono\telefono_salvato.txt > rubrica\elenco\categorie\telefono\telefono.txt

      for /l %%i in (3,-1,1) do (
        cls
        echo Contatto spostato nel cestino attendi [%%i] secondi
        timeout 1 > nul
      )
      goto elimina_contatto

    )
::---------------------------------------------------------------------
:elimina_da_nome_e_cognome
  set /a count=0
  for /f %%i in (rubrica\elenco\unico\rubrica.txt) do (
    set /a count=count+1
  )
  if %count% EQU 0 (
    for /l %%i in (3,-1,1) do (
      cls
      echo Nessun Nome in rubrica attendi [%%i] secondi
      timeout 1 > nul
    )
    goto elimina_contatto
  )
  cls
  :ritorno_elimina_nome_rubrica
    cls
    set /a nome_rubrica=0
    set /p nome_rubrica=Nome:
    call :strlen result nome_rubrica
    if %result% LSS 1 goto ritorno_elimina_nome_rubrica
  :ritorno_elimina_cognome_rubrica
    cls
    set /a cognome_rubrica=0
    set /p cognome_rubrica=Cognome:
    call :strlen result cognome_rubrica
    if %result% LSS 1 goto ritorno_elimina_cognome_rubrica
  set /a count=0
  set /a count2=0
  set /a scelta=0
  for /f %%i in (rubrica\elenco\categorie\nome\nome.txt) do (
    if /i %%i EQU %nome_rubrica% (
      for /f %%a in (rubrica\elenco\categorie\cognome\cognome.txt) do (
        if !count! EQU !count2! (
          if /i %%a EQU %cognome_rubrica% (
            set /a scelta=!count2!+1
          )
        )
        set /a count2=!count2!+1
      )
    )
    set /a count=!count!+1
  )
  set /a contollo=scelta
  set /a count=0
  type nul > rubrica\elenco\unico\rubrica_nomi_salvati.txt
  for /f "tokens=*" %%i in (rubrica\elenco\unico\rubrica.txt) do (
    set /a count=!count! + 1
    if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\unico\rubrica_nomi_salvati.txt )
    if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\unico\rubrica.txt )
  )
  type rubrica\elenco\unico\rubrica_nomi_salvati.txt > rubrica\elenco\unico\rubrica.txt
  set /a count=0
  type nul > rubrica\elenco\categorie\nome\nome_salvato.txt
  for /f "tokens=*" %%i in (rubrica\elenco\categorie\nome\nome.txt) do (
    set /a count=!count! + 1
    if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\nome\nome_salvato.txt )
    if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\nome\nome.txt )
  )
  type rubrica\elenco\categorie\nome\nome_salvato.txt > rubrica\elenco\categorie\nome\nome.txt
  set /a count=0
  type nul > rubrica\elenco\categorie\cognome\cognome_salvato.txt
  for /f "tokens=*" %%i in (rubrica\elenco\categorie\cognome\cognome.txt) do (
    set /a count=!count! + 1
    if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\cognome\cognome_salvato.txt )
    if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\cognome\cognome.txt )
  )
  type rubrica\elenco\categorie\cognome\cognome_salvato.txt > rubrica\elenco\categorie\cognome\cognome.txt
  set /a count=0
  type nul > rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt
  for /f "tokens=*" %%i in (rubrica\elenco\categorie\indirizzo\indirizzo.txt) do (
    set /a count=!count! + 1
    if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt )
    if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt )
  )
  type rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt > rubrica\elenco\categorie\indirizzo\indirizzo.txt
  set /a count=0
  type nul > rubrica\elenco\categorie\citta\citta_salvato.txt
  for /f "tokens=*" %%i in (rubrica\elenco\categorie\citta\citta.txt) do (
    set /a count=!count! + 1
    if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\citta\citta_salvato.txt )
    if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\citta\citta.txt )
  )
  type rubrica\elenco\categorie\citta\citta_salvato.txt > rubrica\elenco\categorie\citta\citta.txt
  set /a count=0
  type nul > rubrica\elenco\categorie\telefono\telefono_salvato.txt
  for /f "tokens=*" %%i in (rubrica\elenco\categorie\telefono\telefono.txt) do (
    set /a count=!count! + 1
    if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\telefono\telefono_salvato.txt )
    if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\telefono\telefono.txt )
  )
  type rubrica\elenco\categorie\telefono\telefono_salvato.txt > rubrica\elenco\categorie\telefono\telefono.txt
  if %scelta% EQU 0 (
    for /l %%i in (3,-1,1) do (
      cls
      echo Nessun Nome trovato attendi [%%i] secondi
      timeout 1 > nul
    )
  ) else (
    for /l %%i in (3,-1,1) do (
      cls
      echo Contatto spostato nel cestino attendi [%%i] secondi
      timeout 1 > nul
    )
  )
  goto elimina_contatto
::---------------------------------------------------------------------------------------------------------
:cestino
  set /a count=0
  for /f %%i in (rubrica\elenco\cestino\unico\rubrica.txt) do (
    set /a count=count+1
  )
  if %count% EQU 0 (
    for /l %%i in (3,-1,1) do (
      cls
      echo Nessun Nome nel cestino attendi [%%i] secondi
      timeout 1 > nul
    )
    goto elimina_contatto
  )
  cls
  type rubrica\interfaccia\menu_cestino.txt
  echo;
  CHOICE /N /C:1234 /M "Inserisci una scelta"
  if %ERRORLEVEL%==1 goto Visualizza_cestino
  if %ERRORLEVEL%==2 goto riprista_contatto
  if %ERRORLEVEL%==3 goto svuota_cestino
  if %ERRORLEVEL%==4 goto elimina_contatto
::---------------------------------------------------------------------------------------------------------
:Visualizza_cestino
  cls
  type rubrica\interfaccia\header_elenco.txt
  echo;
  type rubrica\elenco\cestino\unico\rubrica.txt
  echo Premi un tasto per tornare indietro
  PAUSE > nul
  goto cestino
::---------------------------------------------------------------------------------------------------------
:riprista_contatto
  set /a count2=count
  cls
  if %count2% GTR 9 (
     type rubrica\interfaccia\spazio_vuoto.txt
  ) else (
    if %count2% GTR 99 (
       type rubrica\interfaccia\spazio_vuoto.txt type rubrica\interfaccia\spazio_vuoto.txt
    ) else (
      if %count2% GTR 999 (
         type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
      ) else (
         if %count2% GTR 9999 type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
      )
    )
  )
  echo | set /p=N
  type rubrica\interfaccia\spazio_vuoto.txt
  type rubrica\interfaccia\header_elenco.txt
  echo;
  set /a count=0
  for /f "tokens=*" %%i in (rubrica\elenco\cestino\unico\rubrica.txt) do (
    set /a count=!count! + 1
    if %count2% GTR 9 (
        if not !count! GTR 9 type rubrica\interfaccia\spazio_vuoto.txt
    ) else (
      if %count2% GTR 99 (
        if not !count! GTR 99 type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
      ) else (
        if %count2% GTR 999 ( if !count! GTR 999 type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
        ) else (
          if not %count2% GTR 9999 if !count! GTR 9999 type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt && type rubrica\interfaccia\spazio_vuoto.txt
        )
      )
    )
    echo !count! %%i
  )
  set /a scelta=0
  set /p scelta=Inserisci la riga corrispondente:
  call :strlen result scelta
  if %scelta% GTR %count% (
    for /l %%i in (3,-1,1) do (
      cls
      echo Riga non presente sarai reinderizzato al menu precedente attendi [%%i] secondi
      timeout 1 > nul
    )
    goto cestino
  )
  if %scelta% LSS 1 (

    for /l %%i in (3,-1,1) do (
      cls
      echo Riga non presente sarai reinderizzato al menu precedente attendi [%%i] secondi
      timeout 1 > nul
    )
    goto cestino
  )
  set /a controllo=scelta
  if !controllo! EQU 0 (
    if !scelta! EQU 0 (
      set /a count=0
      type nul > rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\unico\rubrica.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\rubrica.txt )
      )
      type rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt > rubrica\elenco\cestino\unico\rubrica.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\nome\nome_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\nome\nome.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\nome\nome_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\nome\nome.txt )
      )
      type rubrica\elenco\cestino\categorie\nome\nome_salvato.txt > rubrica\elenco\cestino\categorie\nome\nome.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\cognome\cognome.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\cognome\cognome.txt )
      )
      type rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt > rubrica\elenco\cestino\categorie\cognome\cognome.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\indirizzo\indirizzo_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\indirizzo\indirizzo_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\indirizzo\indirizzo.txt )
      )
      type rubrica\elenco\cestino\categorie\indirizzo\indirizzo_salvato.txt > rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\citta\citta_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\citta\citta.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\citta\citta_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\citta\citta.txt )
      )
      type rubrica\elenco\cestino\categorie\citta\citta_salvato.txt > rubrica\elenco\cestino\categorie\citta\citta.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\telefono\telefono.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\telefono\telefono.txt )
      )
      type rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt > rubrica\elenco\cestino\categorie\telefono\telefono.txt

      for /l %%i in (3,-1,1) do (
        cls
        echo Ripristino effettuato con successo attendi [%%i] secondi
        timeout 1 > nul
      )
        goto cestino
      )
  ) else (
      set /a count=0
      type nul > rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\unico\rubrica.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\unico\rubrica.txt )
      )
      type rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt > rubrica\elenco\cestino\unico\rubrica.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\nome\nome_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\nome\nome.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\nome\nome_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\nome\nome.txt )
      )
      type rubrica\elenco\cestino\categorie\nome\nome_salvato.txt > rubrica\elenco\cestino\categorie\nome\nome.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\cognome\cognome.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\cognome\cognome.txt )
      )
      type rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt > rubrica\elenco\cestino\categorie\cognome\cognome.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\indirizzo\indirizzo_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\indirizzo\indirizzo_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\indirizzo\indirizzo.txt )
      )
      type rubrica\elenco\cestinocategorie\indirizzo\indirizzo_salvato.txt > rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\citta\citta_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\citta\citta.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\citta\citta_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\citta\citta.txt )
      )
      type rubrica\elenco\cestino\categorie\citta\citta_salvato.txt > rubrica\elenco\cestino\categorie\citta\citta.txt
      set /a count=0
      type nul > rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt
      for /f "tokens=*" %%i in (rubrica\elenco\cestino\categorie\telefono\telefono.txt) do (
        set /a count=!count! + 1
        if not !count! EQU %scelta% ( echo %%i>> rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt )
        if !count! EQU %scelta% ( echo %%i>> rubrica\elenco\categorie\telefono\telefono.txt )
      )
      type rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt > rubrica\elenco\cestino\categorie\telefono\telefono.txt

      for /l %%i in (3,-1,1) do (
        cls
        echo Ripristino effettuato con successo attendi [%%i] secondi
        timeout 1 > nul
      )

      )

    goto cestino

::---------------------------------------------------------------------------------------------------------
:svuota_cestino
  cls
  choice /c YN /m "Sei Sicuro di voler svuotare il cestino"
  if %ERRORLEVEL% EQU 1 (
    type nul > rubrica\elenco\cestino\categorie\nome\nome_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\indirizzo\indirizzo_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\citta\citta_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt
    type nul > rubrica\elenco\cestino\unico\rubrica.txt
    type nul > rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt
    goto elimina_contatto
  )
  if %ERRORLEVEL% EQU 2 (
    goto cestino
  )
::---------------------------------------------------------------------------------------------------------
:elimina_rubrica
  cls
  choice /c YN /m "Sei Sicuro di voler eliiminare la rubrica"
  if %ERRORLEVEL% EQU 1 (
    type nul > rubrica\elenco\categorie\citta\citta_salvato.txt
    type nul > rubrica\elenco\categorie\citta\citta.txt
    type nul > rubrica\elenco\categorie\cognome\cognome_salvato.txt
    type nul > rubrica\elenco\categorie\cognome\cognome.txt
    type nul > rubrica\elenco\categorie\indirizzo\indirizzo_salvato.txt
    type nul > rubrica\elenco\categorie\indirizzo\indirizzo.txt
    type nul > rubrica\elenco\categorie\nome\nome_salvato.txt
    type nul > rubrica\elenco\categorie\nome\nome.txt
    type nul > rubrica\elenco\categorie\telefono\telefono_salvato.txt
    type nul > rubrica\elenco\categorie\telefono\telefono.txt
    type nul > rubrica\elenco\cestino\categorie\citta\citta_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\citta\citta.txt
    type nul > rubrica\elenco\cestino\categorie\cognome\cognome_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\cognome\cognome.txt
    type nul > rubrica\elenco\cestino\categorie\indirizzo\indirizzo_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\indirizzo\indirizzo.txt
    type nul > rubrica\elenco\cestino\categorie\nome\nome_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\nome\nome.txt
    type nul > rubrica\elenco\cestino\categorie\telefono\telefono_salvato.txt
    type nul > rubrica\elenco\cestino\categorie\telefono\telefono.txt
    type nul > rubrica\elenco\cestino\unico\rubrica_nomi_salvati.txt
    type nul > rubrica\elenco\cestino\unico\rubrica.txt
    type nul > rubrica\elenco\unico\rubrica_cerca.txt
    type nul > rubrica\elenco\unico\rubrica.txt
    type nul > rubrica\elenco\unico\rubrica_nomi_salvati.txt
    type nul > rubrica\elenco\unico\rubrica_ordinata.txt
    goto menu_principale
  )
  if %ERRORLEVEL% EQU 2 (
    goto menu_principale
  )
::---------------------------------------------------------------------------------------------------------
:backup
  dir /b rubrica\backup > rubrica\interfaccia\nomi_backup.txt
  cls
  type rubrica\interfaccia\menu_backup.txt
  echo;
  CHOICE /N /C:1234 /M "Inserisci una scelta"
  if %ERRORLEVEL%==1 goto ripristina_da_backup
  if %ERRORLEVEL%==2 goto effettua_backup
  if %ERRORLEVEL%==3 goto elimina_backup
  if %ERRORLEVEL%==4 goto indietro_backup
::---------------------------------------------------------------------------------------------------------
:ripristina_da_backup
  set /a count=0
  for /f %%i in (rubrica\interfaccia\nomi_backup.txt) do (
    set /a count=count+1
  )
  if %count% EQU 0 (
    for /l %%i in (3,-1,1) do (
      cls
      echo Nessun Backup presente attendi [%%i] secondi
      timeout 1 > nul
    )
    goto backup
  )
  cls
  echo | set /p=N
  type rubrica\interfaccia\spazio_vuoto.txt
  echo;
  set /a count=0
  for /f "tokens=*" %%i in (rubrica\interfaccia\nomi_backup.txt) do (
    set /a count=!count! + 1
    echo !count!. %%i
  )
  set /a scelta=0
  set /p scelta=Scegliere backup da ripristinare
  if %scelta% GTR %count% (
    for /l %%i in (3,-1,1) do (
      cls
      echo Backup non presente sarai reinderizzato al menu precedente attendi [%%i] secondi
      timeout 1 > nul
    )
    goto backup
  )
  if %scelta% LSS 1 (

    for /l %%i in (3,-1,1) do (
      cls
      echo Backup non presente sarai reinderizzato al menu precedente attendi [%%i] secondi
      timeout 1 > nul
    )
    goto backup
  )
  set /a controllo=scelta
  if !controllo! EQU 0 (
    if !scelta! EQU 0 (
      set /a count=0
      for /f "tokens=*" %%i in (rubrica\interfaccia\nomi_backup.txt) do (
      set /a count=!count! + 1
      if !count! EQU %scelta% (
        cls
        choice /c YN /m "Sei Sicuro di voler ripristinare la rubrica dal backup del %%i sovrascrivendo quella attuale"
        if %ERRORLEVEL%==1 (
          rmdir /s /q rubrica\elenco
          xcopy /s /q /e rubrica\backup\%%i rubrica\
          cls
          echo Ripristino effettuato con successo dal backup del %%i
          timeout 3 > nul
          goto backup
        )
        if %ERRORLEVEL%==2 goto backup
      )
      )
    ) else (
        for /l %%i in (3,-1,1) do (
          echo Potrai reinserire l'input fra [%%i] secondi
          timeout 1 > nul
        )
        goto ripristina_da_backup
    )
  ) else (
      set /a count=0
      for /f "tokens=*" %%i in (rubrica\interfaccia\nomi_backup.txt) do (
        set /a count=!count! + 1
        if !count! EQU %scelta% (
          cls
          choice /c YN /m "Sei Sicuro di voler ripristinare la rubrica dal backup del %%i sovrascrivendo quella attuale"
          if !ERRORLEVEL!==1 (
            rmdir /s /q rubrica\elenco
            xcopy /s /q /e rubrica\backup\%%i rubrica\
            cls
            echo Ripristino effettuato con successo dal backup del %%i
            timeout 3 > nul
            goto backup
          )
          if !ERRORLEVEL!==2 (goto backup)
        )
      )
  )
  goto backup
::---------------------------------------------------------------------------------------------------------
:effettua_backup
  set backupDir=%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%
  md rubrica\backup\"%backupDir%"
  xcopy /s /q /e  rubrica\elenco rubrica\backup\%backupDir%\elenco\
  cls
  echo Backup effettuato con successo
  timeout 3 > nul
  goto backup
::---------------------------------------------------------------------------------------------------------
:elimina_backup
set /a count=0
for /f %%i in (rubrica\interfaccia\nomi_backup.txt) do (
  set /a count=count+1
)
if %count% EQU 0 (
  for /l %%i in (3,-1,1) do (
    cls
    echo Nessun Backup presente attendi [%%i] secondi
    timeout 1 > nul
  )
  goto backup
)
  cls
  echo | set /p=N
  type rubrica\interfaccia\spazio_vuoto.txt
  echo;
  set /a count=0
  for /f "tokens=*" %%i in (rubrica\interfaccia\nomi_backup.txt) do (
    set /a count=!count! + 1
    echo !count!. %%i
  )
  set /a scelta=0
  set /p scelta=Scegliere backup da eliminare
  if %scelta% GTR %count% (
    for /l %%i in (3,-1,1) do (
      cls
      echo Backup non presente sarai reinderizzato al menu precedente attendi [%%i] secondi
      timeout 1 > nul
    )
    goto backup
  )
  if %scelta% LSS 1 (

    for /l %%i in (3,-1,1) do (
      cls
      echo Backup non presente sarai reinderizzato al menu precedente attendi [%%i] secondi
      timeout 1 > nul
    )
    goto backup
  )
  set /a controllo=scelta
  if !controllo! EQU 0 (
    if !scelta! EQU 0 (
      set /a count=0
      for /f "tokens=*" %%i in (rubrica\interfaccia\nomi_backup.txt) do (
        set /a count=!count! + 1
        if !count! EQU %scelta% (
          choice /c YN /m "Sei Sicuro di il backup del  %%i"
          if !ERRORLEVEL!==1 (
            rmdir /s /q rubrica\backup\%%i
            cls
            goto backup
          )
          if !ERRORLEVEL!==2 goto backup
        )
      )
    )
  ) else (
      set /a count=0
      for /f "tokens=*" %%i in (rubrica\interfaccia\nomi_backup.txt) do (
        set /a count=!count! + 1
        if !count! EQU %scelta% (
          cls
          choice /c YN /m "Sei Sicuro di il backup del  %%i"
          if !ERRORLEVEL!==1 (
            rmdir /s /q rubrica\backup\%%i
            cls
            goto backup
          )
          if !ERRORLEVEL!==2 goto backup
        )
      )
  )
  goto backup
::---------------------------------------------------------------------------------------------------------
:indietro_backup
  goto menu_principale
::---------------------------------------------------------------------------------------------------------
:esci
  cls
  for /l %%i in (0,+1,5) do (
    echo grazie di aver utilizzato il programma
    echo https://alltimenowsite.altervista.org/
    timeout 1 > nul
  )
  exit
::---------------------------------------------------------------------------------------------------------
:strlen <resultVar> <stringVar>
  (
      setlocal EnableDelayedExpansion
      set "s=!%~2!#"
      set "len=0"
      for %%P in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
          if "!s:~%%P,1!" NEQ "" (
              set /a "len+=%%P"
              set "s=!s:~%%P!"
          )
      )
  )
  (
      endlocal
      set "%~1=%len%"
      exit /b
  )
::---------------------------------------------------------------------------------------------------------