Récupérer chemin dans fichier texte et utiliser le dernier nom de dossier

Fermé
Utilisateur anonyme - 24 janv. 2020 à 21:29
 Utilisateur anonyme - 26 janv. 2020 à 21:53
Bonjour,

Je suis en train de développer un petit programme pour sauvegarder des données sur un NAS, j'ai donc un programme qui me permet d'inscrire les chemins à sauvegarder dans un fichier texte.
L'étape suivante consiste à utiliser une commande (ROBOCOPY) et à la répéter avec tout les chemin qu'il y a dans le fichier.

EXEMPLE :
Je veux sauvegarder "D:\Data", je veux que ROBOCOPY me copie les fichier du dossier "D:\Data" en me créant un dossier nommé "Data" sur le NAS.

J'ai donc un code batch qui lit toutes les lignes :
for /f "tokens=*" %%a in (path.csv) do (
echo line=%%a
)


Et un code qui me permet de récupérer le dernier contenu d'un chemin :
set CHEMIN=C:\Users\XXXXX\Desktop
for /f "delims=\ tokens=*" %%i in ('echo %CHEMIN%') do echo %%~ni
pause


J'essaie de cumuler les 2 afin d'indiquer à ROBOCOPY quel est le chemin à copier et stocker les fichier dans un dossier de même nom que le dernier dossier du chemin.

Merci pour toute aide :)

Configuration: Windows / Firefox 72.0
A voir également:

7 réponses

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
26 janv. 2020 à 20:27
Voilà ce que ça donnerait à peu près :

@echo off
Setlocal EnableExtensions DisableDelayedExpansion
chcp 65001 >nul

for /f "delims=" %%a in (path.csv) do (

for /f "delims=" %%i in ("%%~a") do (

robocopy "%%~a" "\\adressedunas\partage\%%~ni"

)
)

pause


Il manque la création du dossier, pour cela il faudrait savoir sur quelle lettre tu as monté ton lecteur réseau.

1
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 25 janv. 2020 à 06:53
Bonjour,

Quand je lis ton projet 2 détails me chiffonnent :

- quel est le système d'exploitation du NAS ?
- ton script est lancé depuis quelle machine ?


0
Utilisateur anonyme
26 janv. 2020 à 13:41
Bonjour,

J'ai un NAS Synology, donc il s'agit d'un diskstation.
Tandis qu'au script, il s'agit d'un script qui va être exécuté avec les tâches planifiées de Windows, le logiciel me permet juste de définir quels dossier sauvegarder, c'est pour ceci que je m’intéresse maintenant au script.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
26 janv. 2020 à 14:13
Je ne pense pas que Diskstation soit capable de comprendre des commandes MS-DOS.

En plus le script va être exécuté depuis une machine distante, ce qui n'est pas possible sauf utilisation d'un outil tiers tel que PsExec (de la suite PsTools).

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 janv. 2020 à 18:28
Le script serais exécuter sur un ordinateur Windows, j'ai déjà le script qui copie à l'identique un dossier spécifique sur le NAS, ça fonctionne très bien.
Le problème ici c'est que je souhaiterais faire exactement la même chose mais avec des chemins de dossier qui sont inscrit dans un fichier texte, donc il s'agit seulement de code batch pour Windows
0
Utilisateur anonyme
26 janv. 2020 à 21:13
Merci beaucoup, ça fonctionne niquel.
Juste petite question, comment faire pour que le script copie aussi les dossiers commençant par un "." ? J'ai essayer de copier un dossier caché (par exemple .nomdossier) trouvable dans mon dossier utilisateur.

Je met le code si ça peut en aider plus d'un :

@echo off

Setlocal EnableExtensions DisableDelayedExpansion
chcp 65001 >nul

::Variables
for /f "tokens=1-3 delims=:" %%a in ("%time%") do set jour_backup=%%ah%%b
set backup_path=\\adressedunas\Backups
set cmd_backup=robocopy /Z /MIR /UNILOG+:"%backup_path%\LOGS_Robocopy\LOGS_%DATE:/=-%_%jour_backup%.txt" /NP /TEE

::Copie
for /f "delims=" %%a in (path.csv) do (
for /f "delims=" %%i in ("%%~a") do (
::Chemins à copier Source -> Dossier de destination
%cmd_backup% "%%~a" "%backup_path%\%%~ni"
)
)
::Jouer un son
powershell -c (New-Object Media.SoundPlayer "C:\Windows\Media\tada.wav").PlaySync();
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
26 janv. 2020 à 21:23
Voilà :

@echo off
Setlocal EnableExtensions DisableDelayedExpansion
chcp 65001 >nul

for /f "delims=" %%a in (path.csv) do (

for /f "delims=" %%i in ("%%~a") do (

robocopy "%%~a" "\\adressedunas\partage\%%~nxi"

)
)

pause
0
Utilisateur anonyme
26 janv. 2020 à 21:53
Excellent merci beaucoup :D
0