Avatar billede jjense21 Nybegynder
01. juli 2004 - 18:52 Der er 8 kommentarer

Hjælp til script

Jeg har brug for et lille batchscript, som jeg tror er relativt simpelt, hvis man kender mere til scripting end jeg.

Det skal bruges til at overføre diverse dokumenter fra de forskellige profiler der nu måtte være i Windows documents and settings. Dokumenterne skal dog ikke bare kopieres samlet til destinationsmappen, da det er vigtigt at bevare den oprindelige mappestruktur således, at jeg kan se hvilke profiler de forskelige dokumenter tilhører.

Så scriptet skal altså scanne mappen documents and settings og kopiere alle doc, xls og html dokumenter til en destinationsmappe hvor den oprindelige mappestruktur er ført med.

Et eksempel:
I documents and settings ligger profilerne p1 og p2.
I mappen dokumenter under p1 ligger filerne a1.doc, b1.pdf og c1.xls og i mappen foretrukne ligger filen d1.html.

I mappen dokumenter under p2 ligger filerne a2.doc, b2.doc og c2.xls og i mappen foretrukne ligger filen d2.html.

Scriptet genererer en mappe der indeholder to undermapper p1 og p2.

P1 indeholder to undermapper dokumenter og foretrukne. I mappen dokumenter ligger filerne a1.doc og c1.xls. I mappen foretrukne ligger filen d1.html.

P2 indeholder to undermapper dokumenter og foretrukne. I mappen dokumenter ligger filerne a2.doc b2.doc og c2.xls. I mappen foretrukne ligger filen d2.html.

Det var såmænd bare det :-)
Håber jeg har forklaret mig klart, så der ikke er tvivl om hvad jeg ønsker.
Avatar billede jpvj Nybegynder
01. juli 2004 - 18:56 #1
Hvad med en række xcopy?

ex. på batch fil:

xcopy \sourcepath\*.doc \destpath\*.* /s
xcopy \sourcepath\*.xls \destpath\*.* /s
xcopy \sourcepath\*.pdf \destpath\*.* /s

Lidt afh. af hvor mange filtyper du vil have med, så er det da en let løsning
Avatar billede jjense21 Nybegynder
01. juli 2004 - 19:07 #2
Problemet er bare at alle profiler skal tages med, og jeg ikke ved hvad profilerne hedder. Scriptet skal kunne bruges på forskellige maskiner, og der er ofte 10-15 profiler på hver pc.
Avatar billede bertelbrander Praktikant
01. juli 2004 - 20:01 #3
Du burde kunne bruge noget i stil med:

@echo off
setlocal

Set Dest=D:\Temp

for /F "delims=;" %%I in ('dir "C:\Documents and Settings" /AD /B') do @call :Process "%%I"
goto :eof

:Process
xcopy /S /I "C:\Documents and Settings\%~1\*.doc" "%Dest%\%~1"

Du kan selv tilføje en xcopy kommando for hver type fil du vil have kopiert.
Avatar billede jjense21 Nybegynder
01. juli 2004 - 22:51 #4
Tusind tak bertel, det var lige hvad jeg søgte.

Et tillægsspørgsmål. Indeholder Windows en variabel med PC´ens navn ? og kan den aflæses i et batch job ?
Avatar billede bertelbrander Praktikant
01. juli 2004 - 22:55 #5
Måske %COMPUTERNAME%, ellers prøv at køre set kommandoen i en kommando-prompt for at se hele rækken af indbyggede variable.
Avatar billede jjense21 Nybegynder
08. juli 2004 - 19:25 #6
Tusind tak for hjælpen Bertel. Jeg har nu et, der gør det jeg ønsker under Win2k. Desværre giver det problemer under Win NT, og jeg kan ikke helt gennemskue hvorfor. Under NT tager scriptet en evighed (men dog ikke uendelig løkke) om at løbe igennem. Af en eller anden grund bliver dokumenterne kopieret flere gange, men der kommer dog intet spørgsmål om at overskrive eksisterende filer. Det virker som om, at data bliver kopieret et antal gange der er lig med antal profiler. Det var jo ikke helt meningen. Er der nogen der kan gennemskue hvorfor ?
Scriptet der bygger på Bertels svar er her:

@echo off
setlocal

Set Dest=\\server\_bruger-dokumenter_\%COMPUTERNAME%

xcopy /F "C:\*.doc" "%Dest%\drevrod\"
xcopy /F "C:\*.dot" "%Dest%\drevrod\"
xcopy /F "C:\*.xls" "%Dest%\drevrod\"
xcopy /F "C:\*.ppt" "%Dest%\drevrod\"
xcopy /F "C:\*.mdb" "%Dest%\drevrod\"
xcopy /F "C:\*.pdf" "%Dest%\drevrod\"
xcopy /F "C:\*.pst" "%Dest%\drevrod\"
xcopy /F "C:\*.ost" "%Dest%\drevrod\"
xcopy /F "C:\*.pab" "%Dest%\drevrod\"
xcopy /F "C:\*.url" "%Dest%\drevrod\"

for /F "delims=;" %%I in ('dir "C:\Winnt\profiles" /AD /B') do @call :Process "%%I"
goto :eof

:Process
xcopy /S /I /F "C:\winnt\profiles\%~1\*.doc" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.dot" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.xls" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.ppt" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.mdb" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.pdf" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.pst" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.ost" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.pab" "%Dest%\%~1"
xcopy /S /I /F "C:\winnt\profiles\%~1\*.url" "%Dest%\%~1"
Avatar billede jjense21 Nybegynder
30. juli 2004 - 12:31 #7
Ja det er altså ikke fordi jeg ikke vil lukke spørgsmålet og give point. Bertel post som svar, så skal du få de point du fortjener. Jeg håber dog stadig på, at der er nogen, der kan se hvorfor mit script køres flere gange under Win NT 4.0
Avatar billede bertelbrander Praktikant
30. juli 2004 - 20:32 #8
Jeg har vist været uopmærksom.
Det er lidt svært at finde ud af hvad der sker på NT uden at kunne se hvad der sker når du kører det.

Prøv at pipe output ind i en log fil:
whatever.bat >log.txt 2>&1

Så kan du kikke i log.txt og se om du kan regne ud hvad der sker. Jeg kan også godt prøve at kikke på log-filen men den er nok for stor til at poste her.

Fjern evt. "@echo off" i topppen.

Jeg ved ikke rigtigt hvad meningen med den første række af xcopy kommandoer er, der er vist unødvendige?

Jeg vil helst ikke have point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester