Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

script batch

17 réponses
Avatar
fg
Bonjour,

Sur XP, je souhaite disposer d'un batch qui me fournirait le chemin
complet d'un répertoire donné.
Etant peu doué en la matière, je fais appel aux experts !

Merci.

fg

7 réponses

1 2
Avatar
Pierre Maurette
:

[...]

Je veux sauvegarder des données qui se trouvent à un endroit précis de mon
disque dur système (Source) que je veux sauvegarder simultanément sur des
supports différents, dans quatre répertoires de noms différents
: R1, R2, R3, R4.

R1 se trouve sur le disque dur du système en partition W:
R2 est sur une clé USB
R3 et R4 sont sur des disques durs USB.

Les mystères de l'informatique font que parfois (je devrais plutôt dire
souvent) les lettres des partitions changent et ne correspondent plus aux
chemins R1...R4



C'est assez habituel, au moins avec XP, légèrement amélioré parait-il
avec la SP3. Je vois que vous avez une partition fixe en W:, ça n'aide
peut-être pas la stratégie habituelle de "préservation autant que faire
se peut" des lettres.

qui ont été donnés à l'utilitaire de sauvegarde (j'utilise
Cobian Backup 10).

Dans cas je ne sais pas faire autrement, avant de lancer le programme, que de
rétablir les bonnes lettres de partition avec le gestionnaire de disques de
XP.

Et ce que je veux obtenir, c'est retrouver R1, R2, R3, R4 où ils sont,
automatiquement, et faire mes sauvegardes, sans avoir à rétablir les bonnes
lettres de partition. Je précise encore que les destinations R1 à R4 portent
des noms distincts et uniques.



Les solutions à base de scripts sont souvent foireuses, je me permets
de vous suggérer une autre approche, qui doit pouvoir se contenter des
outils GUI, en particulier le gestionnaire de disque, Poste de travail
- clic droit -> Gérer -> Gestion des disques, ou simplement
diskmgmt.msc, et éviter les outils cabalistiques /diskpart/, /mountvol/
et ... Google.
Dans une partition NTFS, W: par exemple, vous faites autant de
répertoires que vous avez besoin de volumes montés, DISK_R1 ... DISK_R4
par exemple, vous pouvez les centraliser dans un dossier USBs. Vous les
laissez vides de tout contenu.
Vos clés et autres disques connectés (éventuellement à des moments
différents), dans /Gestion des disques/, sur chaque volume, par
l'inévitable clic droit, vous accédez à la fenêtre /Modifier la lettre
du lecteur et les chemins d'accès.../. Vous pouvez conserver plusieurs
montages à la fois, mais il est peut-être préférable d'en utiliser un
seul. Donc, vous supprimez la lettre, puis ajoutez /Monter dans le
dossier NTFS vide suivant:/ en sélectionnant celui qui va bien. La
suite coule de source.

--
Pierre Maurette
Avatar
fg
Le 17/03/2012 11:13, Pierre Maurette a écrit :
:

[...]

Je veux sauvegarder des données qui se trouvent à un endroit précis de
mon disque dur système (Source) que je veux sauvegarder simultanément
sur des supports différents, dans quatre répertoires de noms différents
: R1, R2, R3, R4.

R1 se trouve sur le disque dur du système en partition W:
R2 est sur une clé USB
R3 et R4 sont sur des disques durs USB.

Les mystères de l'informatique font que parfois (je devrais plutôt
dire souvent) les lettres des partitions changent et ne correspondent
plus aux chemins R1...R4



C'est assez habituel, au moins avec XP, légèrement amélioré parait-il
avec la SP3. Je vois que vous avez une partition fixe en W:, ça n'aide
peut-être pas la stratégie habituelle de "préservation autant que faire
se peut" des lettres.

qui ont été donnés à l'utilitaire de sauvegarde (j'utilise Cobian
Backup 10).

Dans cas je ne sais pas faire autrement, avant de lancer le programme,
que de rétablir les bonnes lettres de partition avec le gestionnaire
de disques de XP.

Et ce que je veux obtenir, c'est retrouver R1, R2, R3, R4 où ils sont,
automatiquement, et faire mes sauvegardes, sans avoir à rétablir les
bonnes lettres de partition. Je précise encore que les destinations R1
à R4 portent des noms distincts et uniques.



Les solutions à base de scripts sont souvent foireuses, je me permets de
vous suggérer une autre approche, qui doit pouvoir se contenter des
outils GUI, en particulier le gestionnaire de disque, Poste de travail -
clic droit -> Gérer -> Gestion des disques, ou simplement diskmgmt.msc,
et éviter les outils cabalistiques /diskpart/, /mountvol/ et ... Google.
Dans une partition NTFS, W: par exemple, vous faites autant de
répertoires que vous avez besoin de volumes montés, DISK_R1 ... DISK_R4
par exemple, vous pouvez les centraliser dans un dossier USBs. Vous les
laissez vides de tout contenu.
Vos clés et autres disques connectés (éventuellement à des moments
différents), dans /Gestion des disques/, sur chaque volume, par
l'inévitable clic droit, vous accédez à la fenêtre /Modifier la lettre
du lecteur et les chemins d'accès.../. Vous pouvez conserver plusieurs
montages à la fois, mais il est peut-être préférable d'en utiliser un
seul. Donc, vous supprimez la lettre, puis ajoutez /Monter dans le
dossier NTFS vide suivant:/ en sélectionnant celui qui va bien. La suite
coule de source.




Bonjour,

Merci.
Je vais explorer cette piste ...

fg
Avatar
fg
Le 19/03/2012 12:03, a écrit :

Bonjour,

Merci.
Je vais explorer cette piste ...



C'était la solution !
J'en suis très satisfait.
Encore merci.

fg
Avatar
les renardeaux
Bonjour,

Sur XP, je souhaite disposer d'un batch qui me fournirait le chemin complet
d'un répertoire donné.
Etant peu doué en la matière, je fais appel aux experts !

Merci.

fg



Bonsoir,
J'arrive un peu tard, mais juste pour rire :
------------- batch ---------------------------
@echo off
echo>%TEMP%$toto.vbs On Error resume next
echo>>%TEMP%$toto.vbs Set fso =
CreateObject("Scripting.FileSystemObject")
echo>>%TEMP%$toto.vbs Set txt = fso.CreateTextFile("%TEMP%$toto.txt",
True)
echo>>%TEMP%$toto.vbs For Each drv in fso.Drives
echo>>%TEMP%$toto.vbs txt.WriteLine "" ^& drv.DriveLetter
echo>>%TEMP%$toto.vbs Next
echo>>%TEMP%$toto.vbs txt.Close : Set fso = Nothing : WScript.Quit(0)
cscript //Nologo //B %TEMP%$toto.vbs
setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=1" %%a in (%TEMP%$toto.txt) do (
set var=%%a:
!var!
cd
for /R %%b in (R1 R2 R3 R4) do (
if exist %%bNUL @echo %%b>>%TEMP%$totok.txt
)
)
setlocal DISABLEDELAYEDEXPANSION
type %TEMP%$totok.txt
del %TEMP%$toto*.???
pause
-------------------batch : FIN ---------------------------------

Bon, je dis ça comme ça, hein, mais chez moi ça marche.

--

Nathalie & Michel
les petits renardeaux dans la clairière du CTV
Avatar
fg
Le 29/03/2012 19:51, les renardeaux a écrit :
Bonjour,

Sur XP, je souhaite disposer d'un batch qui me fournirait le chemin
complet d'un répertoire donné.
Etant peu doué en la matière, je fais appel aux experts !

Merci.

fg



Bonsoir,
J'arrive un peu tard, mais juste pour rire :
------------- batch ---------------------------
@echo off
echo>%TEMP%$toto.vbs On Error resume next
echo>>%TEMP%$toto.vbs Set fso = CreateObject("Scripting.FileSystemObject")
echo>>%TEMP%$toto.vbs Set txt = fso.CreateTextFile("%TEMP%$toto.txt",
True)
echo>>%TEMP%$toto.vbs For Each drv in fso.Drives
echo>>%TEMP%$toto.vbs txt.WriteLine "" ^& drv.DriveLetter
echo>>%TEMP%$toto.vbs Next
echo>>%TEMP%$toto.vbs txt.Close : Set fso = Nothing : WScript.Quit(0)
cscript //Nologo //B %TEMP%$toto.vbs
setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=1" %%a in (%TEMP%$toto.txt) do (
set var=%%a:
!var!
cd
for /R %%b in (R1 R2 R3 R4) do (
if exist %%bNUL @echo %%b>>%TEMP%$totok.txt
)
)
setlocal DISABLEDELAYEDEXPANSION
type %TEMP%$totok.txt
del %TEMP%$toto*.???
pause
-------------------batch : FIN ---------------------------------

Bon, je dis ça comme ça, hein, mais chez moi ça marche.




OK, j'ai essayé de rire avec toi, mais je suis resté sec, sans un mot
d'explication de ta part.
L'exécution du .bat me donne une fenêtre CMD vide, avec juste un
pointeur inactif, et plus rien.
Je ne suis pas très doué (déjà dit).

fg
Avatar
les renardeaux
L'exécution du .bat me donne une fenêtre CMD vide, avec juste un pointeur
inactif, et plus rien.



As-tu remplacé (R1 R2 R3 R4) à la ligne :

for /R %%b in (R1 R2 R3 R4) do (

par les noms de tes répertoires s'ils s'appellent autrement ?
Bon, par exemple je recherche sur ma babasse les répertoires Cabinet,
fourbi et Pause.J'écris donc cette ligne sous la forme :

for /R %%b in (Cabinet fourbi Pause) do (

et c'est tout (j'ai cru comprendre que tes répertoires ne changeait pas
de nom). Détaillons un peu le script :
Les lignes :

------------------------------
@echo off
echo>%TEMP%$toto.vbs On Error resume next
echo>>%TEMP%$toto.vbs Set fso =
CreateObject("Scripting.FileSystemObject")
echo>>%TEMP%$toto.vbs Set txt = fso.CreateTextFile("%TEMP%$toto.txt",
True)
echo>>%TEMP%$toto.vbs For Each drv in fso.Drives
echo>>%TEMP%$toto.vbs txt.WriteLine "" ^& drv.DriveLetter
echo>>%TEMP%$toto.vbs Next
echo>>%TEMP%$toto.vbs txt.Close : Set fso = Nothing : WScript.Quit(0)
cscript //Nologo //B %TEMP%$toto.vbs
------------------------------

génèrent un fichier $toto.txt dans le répertoire fixé par défaut pour
les fichiers temporaires (variable d'environnement %TEMP%), fichier où
sont énumérés (une ligne par lettre de lecteur/volume/partition) les
éléments trouvés sur le PC et qui a, chez moi par exemple la forme :

-+-+-+
C
D
E
F
G
H
X
Y
Z
-+-+-+

Puis les lignes :

------------------------------
setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=1" %%a in (%TEMP%$toto.txt) do (
set var=%%a:
!var!
cd
for /R %%b in (Cabinet fourbi Pause) do (
if exist %%bNUL @echo %%b>>%TEMP%$totok.txt
)
)
setlocal DISABLEDELAYEDEXPANSION
-------------------------------

générent un fichier $totok.txt, toujours dans le répertoire fixé par
défaut pour les fichiers temporaires (variable d'environnement %TEMP%),
fichier où sont énumérés (une ligne par répertoire) les chemins
complets des répertoires trouvés sur chacun des
lecteur/volume/partition listés dans le fichier $toto.txt et qui a
donc, chez moi par exemple, la forme suivante :

-+-+-+
C:Documents and SettingsAdministrateurApplication DataCabinet
C:Documents and SettingsAdministrateurFavorisBureauCabinet
C:Documents and SettingsAdministrateurFavorisBureaufourbi
C:Documents and SettingsAdministrateurMenu
D‚marrerChantierGestioncommunicationsCabinet
C:Documents and SettingsAll UsersMenu
D‚marrerJobInfirmerieaide-maintenanceCabinet
F:Pause
F:BATCabinet
G:Pause
G:Allo3wSignetsFavorisstaffCabinet
G:Allo3wSignetsFavorisstafffourbi
G:BATCabinet
G:DOCUMENTCabinet
G:DOCUMENTfourbi
H:CourantesCabinet
H:Courantesfourbi
H:doublesGAllo3wDOWNLOADBureauCabinet
H:doublesGAllo3wDOWNLOADBureaufourbi
H:doublesGAllo3wSignetsFavorisBureauCabinet
H:doublesGAllo3wSignetsFavorisBureaufourbi
H:doublesGBATCabinet
H:doublesGDOCUMENTCabinet
H:doublesGDOCUMENTfourbi
H:doublesGDOCUMENTMSOfficeModŠlesfourbi
H:KMANIFOLDGAllo3wDOWNLOADBureauCabinet
H:KMANIFOLDGAllo3wDOWNLOADBureaufourbi
H:KMANIFOLDGAllo3wSignetsFavorisBureauCabinet
H:KMANIFOLDGAllo3wSignetsFavorisBureaufourbi
H:KMANIFOLDGBATCabinet
H:KMANIFOLDGDOCUMENTCabinet
H:KMANIFOLDGDOCUMENTfourbi
H:KMANIFOLDHCourantesCabinet
H:KMANIFOLDHCourantesfourbi
-+-+-+

la ligne :

-+-+-+
type %TEMP%$totok.txt
-+-+-+

affiche le résultat à l'écran (j'ai cru comprendre que c'est ce que tu
recherchais ?)
Enfin les lignes :

-+-+-+
del %TEMP%$toto*.???
pause
-+-+-+

effacent tous ces fichiers temporaires et marrquent une pause pour
laisser le temps de noter ce que tu veux noter.

Petite precision, je tourne sous XP.

Qu'en penses-tu ?

--

Nathalie & Michel
les petits renardeaux dans la clairière du CTV
Avatar
fg
Le 30/03/2012 14:00, les renardeaux a écrit :
L'exécution du .bat me donne une fenêtre CMD vide, avec juste un
pointeur inactif, et plus rien.



As-tu remplacé (R1 R2 R3 R4) à la ligne :

for /R %%b in (R1 R2 R3 R4) do (

par les noms de tes répertoires s'ils s'appellent autrement ?
Bon, par exemple je recherche sur ma babasse les répertoires Cabinet,
fourbi et Pause.J'écris donc cette ligne sous la forme :

for /R %%b in (Cabinet fourbi Pause) do (

et c'est tout (j'ai cru comprendre que tes répertoires ne changeait pas
de nom). Détaillons un peu le script :
Les lignes :

------------------------------
@echo off
echo>%TEMP%$toto.vbs On Error resume next
echo>>%TEMP%$toto.vbs Set fso = CreateObject("Scripting.FileSystemObject")
echo>>%TEMP%$toto.vbs Set txt = fso.CreateTextFile("%TEMP%$toto.txt",
True)
echo>>%TEMP%$toto.vbs For Each drv in fso.Drives
echo>>%TEMP%$toto.vbs txt.WriteLine "" ^& drv.DriveLetter
echo>>%TEMP%$toto.vbs Next
echo>>%TEMP%$toto.vbs txt.Close : Set fso = Nothing : WScript.Quit(0)
cscript //Nologo //B %TEMP%$toto.vbs
------------------------------

génèrent un fichier $toto.txt dans le répertoire fixé par défaut pour
les fichiers temporaires (variable d'environnement %TEMP%), fichier où
sont énumérés (une ligne par lettre de lecteur/volume/partition) les
éléments trouvés sur le PC et qui a, chez moi par exemple la forme :

-+-+-+
C
D
E
F
G
H
X
Y
Z
-+-+-+

Puis les lignes :

------------------------------
setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=1" %%a in (%TEMP%$toto.txt) do (
set var=%%a:
!var!
cd
for /R %%b in (Cabinet fourbi Pause) do (
if exist %%bNUL @echo %%b>>%TEMP%$totok.txt
)
)
setlocal DISABLEDELAYEDEXPANSION
-------------------------------

générent un fichier $totok.txt, toujours dans le répertoire fixé par
défaut pour les fichiers temporaires (variable d'environnement %TEMP%),
fichier où sont énumérés (une ligne par répertoire) les chemins complets
des répertoires trouvés sur chacun des lecteur/volume/partition listés
dans le fichier $toto.txt et qui a donc, chez moi par exemple, la forme
suivante :

-+-+-+
C:Documents and SettingsAdministrateurApplication DataCabinet
C:Documents and SettingsAdministrateurFavorisBureauCabinet
C:Documents and SettingsAdministrateurFavorisBureaufourbi
C:Documents and SettingsAdministrateurMenu
D‚marrerChantierGestioncommunicationsCabinet
C:Documents and SettingsAll UsersMenu
D‚marrerJobInfirmerieaide-maintenanceCabinet
F:Pause
F:BATCabinet
G:Pause
G:Allo3wSignetsFavorisstaffCabinet
G:Allo3wSignetsFavorisstafffourbi
G:BATCabinet
G:DOCUMENTCabinet
G:DOCUMENTfourbi
H:CourantesCabinet
H:Courantesfourbi
H:doublesGAllo3wDOWNLOADBureauCabinet
H:doublesGAllo3wDOWNLOADBureaufourbi
H:doublesGAllo3wSignetsFavorisBureauCabinet
H:doublesGAllo3wSignetsFavorisBureaufourbi
H:doublesGBATCabinet
H:doublesGDOCUMENTCabinet
H:doublesGDOCUMENTfourbi
H:doublesGDOCUMENTMSOfficeModŠlesfourbi
H:KMANIFOLDGAllo3wDOWNLOADBureauCabinet
H:KMANIFOLDGAllo3wDOWNLOADBureaufourbi
H:KMANIFOLDGAllo3wSignetsFavorisBureauCabinet
H:KMANIFOLDGAllo3wSignetsFavorisBureaufourbi
H:KMANIFOLDGBATCabinet
H:KMANIFOLDGDOCUMENTCabinet
H:KMANIFOLDGDOCUMENTfourbi
H:KMANIFOLDHCourantesCabinet
H:KMANIFOLDHCourantesfourbi
-+-+-+

la ligne :

-+-+-+
type %TEMP%$totok.txt
-+-+-+

affiche le résultat à l'écran (j'ai cru comprendre que c'est ce que tu
recherchais ?)
Enfin les lignes :

-+-+-+
del %TEMP%$toto*.???
pause
-+-+-+

effacent tous ces fichiers temporaires et marrquent une pause pour
laisser le temps de noter ce que tu veux noter.

Petite precision, je tourne sous XP.



moi aussi

Qu'en penses-tu ?



Tes explications m'étaient nécessaires, et je comprends mieux
maintenant. Je vais pousser l'expérience jusqu'au bout.

Par ailleurs, j'avais précédemment, sur les conseils de Pierre Maurette,
tenté le coup en montant mes unités de sauvegarde dans des répertoires,
et ce avec l'outil de gestion des disques (sous XP).
J'ai réussi à faire fonctionner tout ça à ma grande satisfaction.
Associé à Cobian Backup, ça marche bien.

Merci de ton aide.

fg











1 2