web-dev-qa-db-fra.com

Fichier de commandes pour créer une sauvegarde et renommer avec horodatage

J'ai le chemin réseau suivant pour copier le fichier dans un dossier d'archive. Il copie File 1 de Folder à Archive mais je voudrais ajouter ces 2 ajustements qui ne fonctionneront pas.

  1. Renommez File 1-1 en File 1 - date + time
  2. L’exécuter affiche maintenant une boîte de dialogue avec le code de copie. Est-il possible de le lancer en arrière-plan ou d’avoir un écran de chargement pour afficher le.

Pour mon code, j'ai suivi cet exemple pour changer le nom en une date.

copy "F:\Folder\File 1.xlsx" "F:\Folder\Archive\File 1-1.xlsx"
/f "tokens=1-5 delim s=/ " %%d in ("%date%") do rename "F:\Folder example 2.xlsx" "F:\Folder\File example %%e-%%f-%%g.xlsx"
13
CustomX

essaye ça:

ren "File 1-1" "File 1 - %date:/=-% %time::=-%"
25
Endoro

Voyez si c'est ce que vous voulez faire:

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%

set stamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%

copy "F:\Folder\File 1.xlsx" "F:\Folder\Archive\File 1 - %stamp%.xlsx"
18
foxidrive

J'ai modifié la réponse de Foxidrive pour copier des dossiers entiers et tout leur contenu. ce script va créer un dossier et y sauvegarder le contenu d'un autre dossier, y compris tous les sous-dossiers situés en dessous.

Si vous mettez ceci dans une tâche planifiée toutes les heures, vous devez faire attention car vous pouvez remplir votre lecteur rapidement avec des copies de votre dossier d'origine. Avant bitbucket, etc., j’utilisais un script similaire pour enregistrer mon code hors ligne.

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%

set stamp=YourPrefixHere_%YYYY%%MM%%DD%@%HH%%Min%
rem you could for example want to create a folder in Gdrive and save backup there
cd C:\YourGoogleDriveFolder
mkdir %stamp%
cd %stamp%

 xcopy C:\FolderWithDataToBackup\*.* /s 
7
KuriaNdungu

Renomme tous les fichiers .pdf en fonction de la date système actuelle. Par exemple, un fichier nommé Gross Profit.pdf est renommé en Gross Profit 2014-07-31.pdf. Si vous l'exécutez demain, il le renommera en Gross Profit 2014-08-01.pdf

Vous pouvez remplacer le ? par le nom du rapport Gross Profit, mais il ne renommera que le rapport. Le ? renomme tout le contenu du dossier Conduit. La raison pour laquelle il y a tant de ?, c'est que certains .pdfs ont des noms longs. Si vous venez de mettre 12 ?s, alors tout nom de plus de 12 caractères sera coupé au 13ème caractère. Essayez-le avec 1 ?, puis essayez-le avec plusieurs ?s. La longueur de ? devrait être un peu plus longue ou aussi longue que le nom du rapport le plus long.

@ECHO OFF
SET NETWORKSOURCE=\\flcorpfile\shared\"SHORE Reports"\2014\Conduit
REN %NETWORKSOURCE%\*.pdf "????????????????????????????????????????????????? %date:~-4,4%-%date:~-10,2%-%date:~7,2%.pdf"
1
user3820643

Oui, pour le faire fonctionner en arrière-plan, créez un raccourci vers le fichier de commandes et accédez aux propriétés. Je suis sur une machine ATM de Linux, mais je crois que l'option que vous voulez se trouve dans l'onglet Avancé.

Vous pouvez également exécuter votre script batch par le biais d'un script vbs, comme suit:

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

Cela exécutera votre fichier de commandes sans fenêtre cmd affichée.

0
krowe