Avatar billede scharff Juniormester
20. marts 2019 - 14:16 Der er 26 kommentarer og
3 løsninger

Dos fil

Hej
Jeg ville lave en bat fil der kan kopiere mapper med C til en anden mappe og omdøbe den til T i en kommandoprompt.

Eks.: C: \ a \ dmc \ C24117 til C: \ b \ dmc \ T24117

I mappen C: \ a \ dmc \ er der også mapper og filer, der ikke starter med bogstavet C, de skal ikke kopieres.

pft.
Avatar billede Slettet bruger
20. marts 2019 - 15:03 #1
ikke forstået. den linie er ikke en copy command.
hvis du vil undgå filer med C skal du lave en $variabel og undgå den
Avatar billede claes57 Ekspert
20. marts 2019 - 15:27 #2
1) kopier
2) omdøb
xcopy c:\a\dmc\c*.* c:\b\dmc /s
ren c:\b\dmc\c*.* t*.* /s

jeg ved ikke lige, om ren kan have /s
har valgt xcopy, da den er mere effektiv ved mange/store filer (copy tager en fil ad gangen, xcopy tager alt, som den har ram til pr gang)
Avatar billede scharff Juniormester
21. marts 2019 - 06:49 #3
Hej claes57
Det virker ikke ?
C:\CNC>xcopy c:\a\dmc\c*.* c:\b\dmc /s
File not found - c*.*
0 File(s) copied
Avatar billede claes57 Ekspert
21. marts 2019 - 07:54 #4
så er der nok ingen filer, der starter med c ifølge xcopy
Avatar billede scharff Juniormester
21. marts 2019 - 08:18 #5
Nej der er ingen filer, men der er mapper der starter med c
Avatar billede claes57 Ekspert
21. marts 2019 - 08:28 #6
Så test samme kommandolinje med copy i stedet for xcopy.
Avatar billede scharff Juniormester
21. marts 2019 - 08:52 #7
Virker desværre heller ikke

copy c:\a\dmc\c*.* c:\b\dmc /s
The system cannot find the path specified.
Avatar billede claes57 Ekspert
21. marts 2019 - 11:15 #8
så rækker mine dos-kundskaber ikke længere, beklager...
Avatar billede RogerWilco Seniormester
25. marts 2019 - 18:33 #9
Prøv dette:

@echo off
set src=c:\a\dmc
set dest=c:\b\dmc
setlocal enabledelayedexpansion
for /f %%i in ('dir %src%\c*.* /ad /b') do (
  xcopy %src%\%%i\*.* %dest%\%%i /s /i
  ren %dest%\%%i t!%%i:~1!
  )
Avatar billede scharff Juniormester
25. marts 2019 - 19:50 #10
det virker det med at kopiere :-)
men rename virker ikke, mappen kommer bare til at blive til t~1
mappen c24117 skal blive til t24117
Avatar billede RogerWilco Seniormester
26. marts 2019 - 07:55 #11
@echo off
set src=c:\a\dmc
set dest=c:\b\dmc
setlocal enabledelayedexpansion
for /f %%i in ('dir %src%\c*.* /ad /b') do (
  xcopy %src%\%%i\*.* %dest%\%%i /s /i
  set dname=%%i
  ren %dest%\%%i t!dname:~1!
  )
Avatar billede Slettet bruger
26. marts 2019 - 09:06 #12
xcopy C:\a\ dmc\C*.* C:\b\dmc\T*.*

Jeg har lige testet i en windows 10 commando prompt, både med  copy og xcopy.
Det virker fint.


/s så tager den under biblioteker med

@Claes i #2, jeg mener du glemmer \ *.* i dit target under kopieringen, så vidt jeg kan se kommer du til at kopiere til en fil der hedder dmc i biblioteket b.
Det kan være jeg tager fejl / husker forkert

hvis du vil kopiere alle filer fra et bibliotek til et andet skal den hedde:
copy c:\test\*.* c:\hest\*.*
Avatar billede scharff Juniormester
26. marts 2019 - 09:55 #13
rogerrabbit
kopiere virker som det skal, det er rename der ikke virker ?
Avatar billede Slettet bruger
26. marts 2019 - 10:28 #14
hmmm, det virker fint hos mig.

Jeg har forsøgt at lave et "outout" så du kan se det.
og som du kan se kopierer og omdøber den i en kommando.

Volume in drive C has no label.
Volume Serial Number is 90CF-B78F

Directory of C:\a\dmc

26-03-2019  10:18    <DIR>          .
26-03-2019  10:18    <DIR>          ..
26-03-2019  10:17                6 C24117.txt
26-03-2019  10:18                0 output.txt
              2 File(s)              6 bytes
              2 Dir(s)  20.024.954.880 bytes free


Volume in drive C has no label.
Volume Serial Number is 90CF-B78F

Directory of c:\b\dmc

26-03-2019  10:16    <DIR>          .
26-03-2019  10:16    <DIR>          ..
              0 File(s)              0 bytes
              2 Dir(s)  20.023.586.816 bytes free


C:\>xcopy c:\a\dmc\C*.* c:\b\dmc\T*.*

C:\a\dmc\C24117.txt
1 File(s) copied

Volume in drive C has no label.
Volume Serial Number is 90CF-B78F

Directory of c:\b\dmc

26-03-2019  10:21    <DIR>          .
26-03-2019  10:21    <DIR>          ..
26-03-2019  10:17                6 T24117.txt
              1 File(s)              6 bytes
              2 Dir(s)  20.026.920.960 bytes free
Avatar billede Slettet bruger
26. marts 2019 - 11:04 #15
Lige øjeblik,
har jeg misforstået opgaven?

er det i a eller b biblioteket filerne skal omdøbes?

Hvis du vil kopiere fra a til b, og så omdøbe filerne i a, skal du bruge 2 kommandoer som i #2.

xcopy c:\a\dmc\C*.* c:\b\dmc\*.*
ren c:\a\dmc\C*.* c:\a\dmc\T*.*
Avatar billede Slettet bruger
26. marts 2019 - 11:08 #16
Måske du lige skulle prøve at kopiere nogle filer over i et test bibliotek og lege med.
Avatar billede scharff Juniormester
26. marts 2019 - 11:21 #17
Det er ikke filer der skal omdøbes, kun mapper 😉
Avatar billede Slettet bruger
26. marts 2019 - 15:42 #18
OKay så :)

Den er lidt sjovere :)

jeg prøver lige at lege lidt.
jeg er først tilbage på torsdag :(
Avatar billede scharff Juniormester
26. marts 2019 - 16:31 #19
RogerWilco
Er det muligt at flytte istedet for at kopiere ?

@echo off
set src=c:\a\dmc
set dest=c:\b\dmc
setlocal enabledelayedexpansion
for /f %%i in ('dir %src%\c*.* /ad /b') do (
  xcopy %src%\%%i\*.* %dest%\%%i /s /i
  set dname=%%i
  ren %dest%\%%i t!dname:~1!
  )
Avatar billede scharff Juniormester
26. marts 2019 - 17:55 #20
Eller hvis man bare kan slette mapper med C ? så ville det også være en løsning
Avatar billede RogerWilco Seniormester
27. marts 2019 - 08:34 #21
Det burde så bare være:

@echo off
set src=c:\a\dmc
set dest=c:\b\dmc
setlocal enabledelayedexpansion
for /f %%i in ('dir %src%\c*.* /ad /b') do (
  move %src%\%%i %dest%
  set dname=%%i
  ren %dest%\%%i t!dname:~1!
  )
Avatar billede scharff Juniormester
27. marts 2019 - 15:41 #22
Der sker noget underligt der er 1 mappe den tager filerne ud af hver gang jeg bruger move command der er 5 andre mapper som bliver flyttet som de skal....

Kan man bare lave en command så man sletter de mapper der starter med C ?
så kan jeg bare bruge xcopy det virker hver gang :-)
Avatar billede RogerWilco Seniormester
27. marts 2019 - 20:53 #23
Det lyder underligt, hvis sådan bare lige udelader en mappe. Har du den pågældende mappe åben i stifinderen (eller andre programmer), eller er der underlige bogstaver (æøå eller udenlandske tilsvarende) i mappe- eller filnavne?

Hvis man skal bruge xcopy med efterfølgende sletning af mappe, kunne det se således ud:

@echo off
set src=c:\a\dmc
set dest=c:\b\dmc
setlocal enabledelayedexpansion
for /f %%i in ('dir %src%\c*.* /ad /b') do (
  xcopy %src%\%%i\*.* %dest%\%%i /s /i
  set dname=%%i
  ren %dest%\%%i t!dname:~1!
  rd %src%\%%i /s /q
  )
Avatar billede Slettet bruger
28. marts 2019 - 10:08 #24
Godt I har fundet en løsning :)

Og jeg er helt enig i at move er bedre at bruge, hvis de gamle biblioteker alligevel skal slettes.

Jeg har leget lidt med xcopy, men har heller ikke fået det til at virker på biblioteker :(
Avatar billede scharff Juniormester
28. marts 2019 - 21:36 #25
RogerWilco
du er for sindsyg til det............ :-) :-) :-) Tak
Avatar billede scharff Juniormester
05. april 2019 - 10:28 #26
RogerWilco
Jeg ville bare høre dig om det er besværligt at få den til at kunne gøre det samme med mapper med mellemrum ?
Eks.: C: \ a \ dmc \ C24117 Hans til C: \ b \ dmc \ T24117 Hans

pft.
Avatar billede RogerWilco Seniormester
19. april 2019 - 10:49 #27
Ups, jeg glemte vist at besvare denne - prøv nedenstående:

@echo off
set src=c:\a\dmc
set dest=c:\b\dmc
setlocal enabledelayedexpansion
for /f "delims=§" %%i in ('dir "%src%\c*.*" /ad /b') do (
  xcopy "%src%\%%i\*.*" "%dest%\%%i" /s /i
  set dname=%%i
  ren "%dest%\%%i" "t!dname:~1!"
  rd "%src%\%%i" /s /q
  )
Avatar billede scharff Juniormester
23. april 2019 - 07:39 #28
Hej jeg prøvede dette, men virker ikke ?
@echo off
set src=c:\a\"dmc 2"
set dest=c:\b\"dmc 2"
setlocal enabledelayedexpansion
for /f "delims=§" %%i in ('dir "%src%\c*.*" /ad /b') do (
  xcopy "%src%\%%i\*.*" "%dest%\%%i" /s /i
  set dname=%%i
  ren "%dest%\%%i" "T!dname:~1!"
  rd "%src%\%%i" /s /q
  )
Avatar billede RogerWilco Seniormester
23. april 2019 - 14:21 #29
Når man normalt angiver mappenavne med mellemrum, skal det være hele stien der er omfattet af anførselstegn, f.eks.:
dir "c:\a\dmc 2"

I dit tilfælde skal der dog ikke bruges anførselstegn i set-kommandoerne, da de allerede er med i kommandoerne med selve fil-tilgangen - dvs. dir/xcopy/ren/rd.

Så du skal bare skrive
set src=c:\a\dmc 2
set dest=c:\b\dmc 2
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