Thor. Skrevet 26. september 2007 Del Skrevet 26. september 2007 Følgende script sjekker hvilken bokstav som er min mp3 spiller (leter etter "denne.txt" på samtlige disker. D er utelukket) Jeg ønsker at dersom den ikke finner noen disker så skal den overføre til en default mappe (den er REM merket). Det som skjer er at den går helt ned til bunnen istedet for og utføre goto start Hva gjør jeg feil og er det noen enklere måte å lage dette scriptet på? Klikk for å se/fjerne innholdet nedenfor @echo off title mp3 kopierer if exist c:\denne.txt set mal=c:\ if mal==c:\ goto start if exist e:\denne.txt set mal=e:\ if mal==e:\ goto start if exist f:\denne.txt set mal=f:\ if mal==f:\ goto start if exist g:\denne.txt set mal=g:\ if mal==g:\ goto start if exist h:\denne.txt set mal=h:\ if mal==h:\ goto start if exist i:\denne.txt set mal=i:\ if mal==i:\ goto start if exist j:\denne.txt set mal=j:\ if mal==j:\ goto start if exist k:\denne.txt set mal=k:\ if mal==k:\ goto start if exist l:\denne.txt set mal=l:\ if mal==l:\ goto start if exist m:\denne.txt set mal=m:\ if mal==m:\ goto start if exist n:\denne.txt set mal=n:\ if mal==n:\ goto start if exist o:\denne.txt set mal=o:\ if mal==o:\ goto start if exist p:\denne.txt set mal=p:\ if mal==p:\ goto start if exist q:\denne.txt set mal=q:\ if mal==q:\ goto start REM set mal=c:\ cls :start cls Echo kopierer til %mal% pause :loop cls set /P lol=kilde: copy "%lol%" "%mal%" move "*.mp3" "%mal%\Root" move "*.wma" "%mal%\Root" move "*.wav" "%mal%\Root" goto loop Lenke til kommentar
maedox Skrevet 26. september 2007 Del Skrevet 26. september 2007 (endret) Du kan jo fjerne alle 'if mal==?:\ goto start' for den vil jo bare ignorere de om de ikke er satt. Hva med å heller bruke startparameter for å manuelt sette inn riktig stasjonsbokstav? Endret 26. september 2007 av maedox Lenke til kommentar
Thor. Skrevet 26. september 2007 Forfatter Del Skrevet 26. september 2007 if mal== er fjernet Men jeg vil at dette skal gjøres av seg selv Jeg forsøkte med å sette "set mal=nei" helt på starten og en "if mal==nei goto standard" Men selv om den ikke finner denne.txt slik at den setter en label så ignorerer den "if mal==nei" kommandoen. Hvorfor? Lenke til kommentar
maedox Skrevet 27. september 2007 Del Skrevet 27. september 2007 (endret) Skudd i blinde, men hva om du bytter om slik at det blir IF nei==mal ? Evt. SET MAL= og så bruker IF ()==(%MAL%) GOTO STANDARD Endret 27. september 2007 av maedox Lenke til kommentar
Thor. Skrevet 27. september 2007 Forfatter Del Skrevet 27. september 2007 resultatet: Klikk for å se/fjerne innholdet nedenfor @echo offtitle mp3 kopierer SET MAL= if exist c:\denne.txt set mal=c:\ if exist e:\denne.txt set mal=e:\ if exist f:\denne.txt set mal=f:\ if exist g:\denne.txt set mal=g:\ if exist h:\denne.txt set mal=h:\ if exist i:\denne.txt set mal=i:\ if exist j:\denne.txt set mal=j:\ if exist k:\denne.txt set mal=k:\ if exist l:\denne.txt set mal=l:\ if exist m:\denne.txt set mal=m:\ if exist n:\denne.txt set mal=n:\ if exist o:\denne.txt set mal=o:\ if exist p:\denne.txt set mal=p:\ if exist q:\denne.txt set mal=q:\ echo c til q IF ()==(%MAL%) GOTO STANDARD echo label start :start Echo kopierer til %mal% pause :loop if mal==nei goto standard cls set /P lol=kilde: copy "%lol%" "%mal%" move "*.mp3" "%mal%\Root" move "*.wma" "%mal%\Root" move "*.wav" "%mal%\Root" goto loop :standard echo label standard set mal="C:\Documents and Settings\Thor\Skrivebord\mp3" goto start Men det samme skjer. Jeg klarer ikke skjøne hvorfor. Om du er grei så tester du det på din egen maskin ved å for eksempel lagre denne i en egen mappe et sted og lager en "denne.txt" rett på c for eksempel og tester om det bare er min pc som gjør noe feil Lenke til kommentar
Skagen Skrevet 28. september 2007 Del Skrevet 28. september 2007 (endret) Du introduserer if mal==nei goto standard i loopen din for å bryte den, men det finnes ingen setning i hele programmet som noen ganger setter mal=nei, noe som betyr at loopen er uendelig. Og IF ()==(%MAL%) GOTO STANDARD vil være negativ hele tiden om jeg ikke tar feil nå, og er derfor helt meningsløs. Hvorfor bruker du en loop? Skal du gjenta kopieringen til flere mapper? Og hvorfor bruker du først copy, og så move? Her er de feilene jeg har funnet så langt: Klikk for å se/fjerne innholdet nedenfor @echo off title mp3 kopierer SET MAL= if exist c:\denne.txt set mal=c:\ if exist e:\denne.txt set mal=e:\ if exist f:\denne.txt set mal=f:\ if exist g:\denne.txt set mal=g:\ if exist h:\denne.txt set mal=h:\ if exist i:\denne.txt set mal=i:\ if exist j:\denne.txt set mal=j:\ if exist k:\denne.txt set mal=k:\ if exist l:\denne.txt set mal=l:\ if exist m:\denne.txt set mal=m:\ if exist n:\denne.txt set mal=n:\ if exist o:\denne.txt set mal=o:\ if exist p:\denne.txt set mal=p:\ if exist q:\denne.txt set mal=q:\ echo c til q IF ()==(%MAL%) GOTO STANDARD echo label start :start Echo kopierer til %mal% pause :loop if mal==nei goto standard cls set /P lol=kilde: copy "%lol%" "%mal%" move "*.mp3" "%mal%\Root" move "*.wma" "%mal%\Root" move "*.wav" "%mal%\Root" goto loop :standard echo label standard set mal="C:\Documents and Settings\Thor\Skrivebord\mp3" goto start Det er mulig jeg har misforstått hva du ønsker at programmet skal gjøre, og det er mulig jeg har glemt korrekt bruk av xcopy, men her er min versjon: Klikk for å se/fjerne innholdet nedenfor @ECHO OFF CLS TITLE MP3 Kopiering SET DEST="C:\Documents and Settings\Thor\Skrivebord\mp3" IF EXIST c:\denne.txt SET DEST="c:\" IF EXIST e:\denne.txt SET DEST="e:\" IF EXIST f:\denne.txt SET DEST="f:\" IF EXIST g:\denne.txt SET DEST="g:\" IF EXIST h:\denne.txt SET DEST="h:\" IF EXIST i:\denne.txt SET DEST="i:\" IF EXIST j:\denne.txt SET DEST="j:\" IF EXIST k:\denne.txt SET DEST="k:\" IF EXIST l:\denne.txt SET DEST="l:\" IF EXIST m:\denne.txt SET DEST="m:\" IF EXIST n:\denne.txt SET DEST="n:\" IF EXIST o:\denne.txt SET DEST="o:\" IF EXIST p:\denne.txt SET DEST="p:\" IF EXIST q:\denne.txt SET DEST="q:\" SET /P SRC=Skriv inn kildebane: ECHO Kopierer fra %SRC% til %DEST%\Root\ ... MD %DEST%\Root XCOPY "%SRC%" "%DEST%\Root" /E :END Psuedokoden blir slik: 1. Set destinasjon-banen til "C:\Documents and Settings\Thor\Skrivebord\mp3". 2. Om filen "denne.txt" finnes på en stasjon skal destinasjon-banen endres til stasjonbokstaven, hvis ikke skal destinasjon-banen forbli uendret (se 1.) 3. Få brukeren til å oppgi kilde-banen. 4. Lag undermappen "Root" i destinasjon-banen. 5. Kryss-kopier alt innholdet fra kilde-banen til undermappa "Root" i destinasjons-banen, inkl. alle undermapper. 6. Avslutt. PS. Eneste grunnen til at jeg opererer med ei undermappe Root er fordi du har det i ditt program, og jeg tenkte det var en hensikt med dette. Men dette kan såklart endres eller fjernes helt slik at kopieringen skjer direkte til destinasjon-banen. Håper dette var til hjelp Endret 28. september 2007 av skag1 Lenke til kommentar
Thor. Skrevet 28. september 2007 Forfatter Del Skrevet 28. september 2007 (endret) Nå skal jeg svare på flere av dine spørsmål skag1. Dette scriptet lagde jeg for jeg var lei av musikken jeg hadde på muvoen. På toppen av det hele er musikken min fordelt på mange mapper så det er tungvindt å navigere seg frem hver gang man finner en god sang. Derfor, når jeg har denne oppe og finner en "go'sang" så høyreklikker jeg filen og velger "View file info" og kopierer stien til musikkfilen og limer inn i cmd promptet. Etter endt kopiering så blir den flyttet til sin mappe "root". Om det ligger andre filer enn musikkfiler på muvoen så havner de ikke i mp3 mappen. mitt system: finner en bra sang Starter dette scriptet ved en hothey kopierer filinformasjonen og limer inn i "mp3 kopierer" scriptet kopierer filen til *:\ scriptet flytter alle lydfiler som støttes av muvoen til "Root" de resterende filene (burde) flyttes til "diverse" (bare jeg hadde klart å ekskludere .bat) Scriptet går tilbake til labelen "loop" og er klar for en ny filkopiering. Og takk skag1. Jeg glemte helt at det bare var å plassere set mal="C:\Documents and Settings\Thor\Skrivebord\mp3" helt på starten for så å la resten av diskene komme etterpå. Da var det løst Endret 28. september 2007 av Thor. Lenke til kommentar
Skagen Skrevet 28. september 2007 Del Skrevet 28. september 2007 (endret) Ah, da har jeg misforstått. Men istedet for at du må høyreklikke på filer, kopiere og lime inn banen, så kan du jo heller lage shell-integrasjon for batch-programmet. Da kan du høyreklikke på ei fil og fra dropdown-menyen velge f.eks "Kopier til root..." så vil batch-programmet ditt selv finne ut banen for fila og kopiere og ordne alt for deg, og til slutt lukke seg selv automatisk. I batch er det %1 som er programargumenter (filbanen i dette tilfellet, og bruk %1 %2 %3 %4 osv om du har flere argumenter adskilt ved mellomrom), så du må modifisere programmet ditt til å kopiere %1 til %MAL%\Root. Her fant jeg informasjon om hva du må legge til i systemregistret ditt for å ordne shell-integrasjon. Endret 28. september 2007 av skag1 Lenke til kommentar
Thor. Skrevet 28. september 2007 Forfatter Del Skrevet 28. september 2007 Høres gulle flott ut men dette går via Winamp . Når jeg finner en "verdt å høre" sang kopierer jeg den til min mp3 spiller. Ellers kunne jeg brukt C:\Documents and Settings\Thor\SendTo og modifisere batch scriptet (tror jeg) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå