{"id":1406,"date":"2024-11-02T19:53:36","date_gmt":"2024-11-02T19:53:36","guid":{"rendered":"https:\/\/www.budus.it\/Blog\/?p=1406"},"modified":"2024-11-02T19:53:36","modified_gmt":"2024-11-02T19:53:36","slug":"un-batch-per-archiviare-una-cartella-tramite-7z-usando-invia-a-di-windows","status":"publish","type":"post","link":"https:\/\/www.budus.it\/Blog\/un-batch-per-archiviare-una-cartella-tramite-7z-usando-invia-a-di-windows\/","title":{"rendered":"Un Batch per archiviare una cartella tramite 7z usando Invia A di Windows"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Forse servir\u00e0 solo a me ma &#8211; spesso &#8211; mi trovo ad archiviare una cartella, prima di modificarla, per averne una copia di backup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per\u00f2 mi piace che il backup abbia un &#8220;codice di versione&#8221;, ovvero: se archivio la cartella &#8220;pippo&#8221; voglio che l&#8217;archivio si chiami &#8220;pippo_2024-11-02_2034.7z&#8221; dove, tutto quello che viene dopo &#8220;pippo&#8221;, \u00e8 un codice progressivo che identifica data e ora di creazione del backup, cos\u00ec che siano sequenziali, in ordine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per farlo, procedere come segue:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1] Aprire la cartella del &#8220;Invia a:&#8221; di Windows; usare win+r e digitare:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>shell:sendto<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2] Nella cartella che si apre, creare un file di testo e rinominarlo come:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ARCHIVIA_CARTELLA.bat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3] Aprire in modifica il file di cui sopra ed incollare il seguente codice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@echo off\nsetlocal enabledelayedexpansion\n\n:: ******************************************************************\n:: Script per creare l'archivio della cartella passato come parametro, usando\n:: 7z ed associando un codice progressivo automaticamente.\n::\n:: Versione 202-11-02\n:: budus@hotmail.it\n:: ******************************************************************\n\nset percorso7z=\nset archive_code=\nset archive_name=\n\n:: Immagazzina la data e ora corrente.\nfor \/f \"tokens=1-4 delims=\/ \" %%a in ('date \/t') do (\n\tset anno=%%c\n\tset mese=%%b\n\tset giorno=%%a\n)\n\nfor \/f \"tokens=1-2 delims=: \" %%a in ('time \/t') do (\n\tset ora=%%a\n\tset minuti=%%b\n)\n\nset archive_code=!anno!-!mese:~0,2!-!giorno:~0,2!_!ora:~0,2!!minuti:~0,2!\n\n:: Verifica che il parametro sia una cartella e che esista.\nif exist \"%~1\" (\n\tif not exist \"%~1\\*.*\" (\n\t\techo &#91;I] Il percorso\n\t\techo     \"%~1\"\n\t\techo     e' una cartella vuota.\n\t) else (\n\t\tif exist \"%~1\\*\" (\n\t\t\techo &#91;I] Il percorso\n\t\t\techo     \"%~1\"\n\t\t\techo     e' una cartella.\n\t\t) else (\n\t\t\techo &#91;I] Il parametro\n\t\t\techo     \"%~1\"\n\t\t\techo     risulta essere un file.\n\t\t\tgoto end_with_error\n\t\t)\n\t)\n) else (\n\techo &#91;I] Il parametro\n\techo     \"%~1\"\n\techo     non risulta essere una cartella.\n\n\tgoto end_with_error\n)\n\n:: Estrapola il nome della cartella da archiviare.\nfor \/f \"delims=\" %%a in (\"%~1\") do (\n\tset archive_name=%%~nxa\n)\n\necho &#91;I] Archiviazione della cartella:\necho     %1\necho     con il codice: %archive_code%\necho     nell'archivio: %archive_name%\n\nfor \/f \"delims=\" %%a in ('where \/R \"%ProgramFiles%\" 7z.exe') do (\n\tif not defined percorso7z set percorso7z=%%a\n\tgoto end\n)\n\n:end\n:: Se non \u00e8 stato trovato 7z, emette errore.\nif not defined percorso7z goto error__no7z\n\n:: Esegue l'archiviazione usando 7z.\n\"%percorso7z%\" a -bd -- \"%archive_name%_%archive_code%\" \"%~1\"\ntimeout 3\nexit \/B %errorlevel%\n\n\n:error__no7z\necho &#91;E] 7z non e' stato trovato in:\necho     %ProgramFiles%\n\n:end_with_error\n@pause\nexit \/B 1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4] Chiudere e salvare il file bat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ora \u00e8 sufficiente usare il menu contestuale di Esplora File di Windows (per Windows 11 si rende necessario aprire le opzioni aggiuntive, cosa fattibile se si tiene premuto il tasto Maiuscola\/Shift), quindi, &#8220;Invia a&#8221; e &#8220;ARCHIVIA_CARTELLA.bat&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nel bat ho messo diversi commenti, dovrebbe essere chiaro (s\u00ec, fino ad un certo punto, me ne rendo conto &#8230;) cosa fa ogni pezzo di codice. Se proprio siete curiosi di approfondire, potete chiedermelo o usare qualsiasi AI ed incollare la porzione di codice che vi lascia perplessi, se non l&#8217;intero script.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nel caso in cui preferiate <strong>eliminare la cartella dopo l&#8217;archiviazione<\/strong>, potente modificare la riga:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"%percorso7z%\" a -bd -- \"%archive_name%_%archive_code%\" \"%~1\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">in:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"%percorso7z%\" a -bd -sdel -- \"%archive_name%_%archive_code%\" \"%~1\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Creare un bat per Windows che utilizza 7z per archiviare una cartella selezionata in Esplora File ed inviata tramite &#8220;invia a&#8221; del menu contestuale.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,25],"tags":[256,98],"class_list":["post-1406","post","type-post","status-publish","format-standard","hentry","category-development","category-operating-system","tag-dos","tag-windows"],"_links":{"self":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/1406","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/comments?post=1406"}],"version-history":[{"count":2,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/1406\/revisions"}],"predecessor-version":[{"id":1408,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/1406\/revisions\/1408"}],"wp:attachment":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/media?parent=1406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/categories?post=1406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/tags?post=1406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}