Avatar billede 24u Juniormester
09. juni 2003 - 19:37 Der er 26 kommentarer og
1 løsning

Program til windows.

Jeg leder efter et program der kan hente en fil i et bibbliotek og smide det i et andet.

Det kan jeg lave via lidt dos programmering.
Problemet er bare at den fil som skal hentes hedder det samme, men skal hedde noget andet end de filer den allerede har hentet.


Altså..

Filen hedder players.txt (eller doc)

Og den skal så kopieres med mellemrum til en anden mappe.. og hedde fks. players1.txt players2.txt osv. så man ikke overskriver den sidste.

Det er en backup fil, og er til at se ip'er på en spille server. (delta force:task force dagger)

Kan man lave det i dos, eller er der nogle der har en idé?

-24U-
Avatar billede 24u Juniormester
09. juni 2003 - 19:57 #1
ingen??
Avatar billede bertelbrander Novice
09. juni 2003 - 20:28 #2
Hvilke(n) Windows version(er) skal det kunne køre på?
Avatar billede bertelbrander Novice
09. juni 2003 - 20:40 #3
I Windows NT/2000/XP kan man lave noget i stil med følgende:
<code>
@echo off
setlocal
set next=0
for /F %%i in ('dir /B player???.txt') do call :do_it %%i
set /A next= 1 + %next%
echo copy player.txt player%next%.txt

endlocal
goto :eof

:do_it

set xxx=%1
set xxx=%xxx:~6%
set xxx=%xxx:~0,-4%
if %xxx% GTR %next% set next=%xxx%
</code>
Bemærk at dette script ikke flytter filen til en anden mappe, men kun kopierer den til en nyt filnavn. Men det kan let ændres til at flytte filen til en anden mappe.
Den linie hvor kopieringen sker er følgene:
echo copy player.txt player%next%.txt
Jeg har puttet en echo ind først, så den skriver kommandoen på skærmen i stedet for at udfører den, slet ordet echo når du er færdig med at teste.
Avatar billede 24u Juniormester
10. juni 2003 - 00:03 #4
æhh.. er det dos?
Det ligner det ikke.. har prøvet at lave det som dos ;o)

-24U-
Avatar billede 24u Juniormester
10. juni 2003 - 00:04 #5
samt smidt det i samme mappe som filen

-24U-
Avatar billede bertelbrander Novice
10. juni 2003 - 00:06 #6
Du kan bruge DOS kommandoen AT, til at skedulere batch-filen til at køre med jævne mellemrum. Skriv "help at" i en kommando-prompt for at finde ud af hvordan.
Avatar billede 24u Juniormester
10. juni 2003 - 00:11 #7
kan du ikke skrive på icq..
jeg poster det hele bagefter.

-24U-
Avatar billede 24u Juniormester
10. juni 2003 - 00:11 #8
57481320

-24U-
Avatar billede bertelbrander Novice
10. juni 2003 - 00:24 #9
Jeg ved ikke hvad icq er.
Avatar billede bertelbrander Novice
10. juni 2003 - 00:29 #10
Ja, det er dos, det der står mellem <code> & </code> skal puttes i en batch-fil (dvs. en fil med extension bat eller cmd).
For at teste kan du lave en mappe med en player.txt fil en player1.txt og en player2.txt, og putte batch-filen i denne mappe.
Når du så kører scriptet skulle der gerne stå:
copy player.txt player3.txt
Avatar billede 24u Juniormester
10. juni 2003 - 17:08 #11
hmm.. det virker ikke.. har lavet en mappe smidt programmet ind som .bat fil
lavet et par players(1,2).txt men der sker intet når man trykker på knappen.. andet at man lige når at ane at bat filen åbner.

-24U-
Avatar billede bertelbrander Novice
10. juni 2003 - 19:37 #12
For at kunne se noget er du nød til at åbne en DOS-prompt og køre scriptet derfra.
Har du lavet en player.txt fil?
Avatar billede bertelbrander Novice
10. juni 2003 - 23:35 #13
Du kan også bruge Scheduled Tasks fra Kontrol Panelet til at skedulere din batch fil til at køre med jævne mellemrum.
Avatar billede 24u Juniormester
11. juni 2003 - 01:19 #14
hmm den laver denne fejl : www.supremekillers.dk/gemfil.jpg

Fandt lige ud af at filen hed noget andet, som man kan se har jeg renemet den til det rigtige.

-24U-
Avatar billede bertelbrander Novice
11. juni 2003 - 02:05 #15
Ups, min fejl.
Hedder den fil der skal kopieres player.txt eller players.txt?
I det følgende har jeg gået ud fra at den hedder player.txt, hvis den hedder players.txt skal du rette copy linien og første linie efter :do_it
Ny version:
<code>
@echo off
setlocal
set next=0
for /F %%i in ('dir /B player*.txt') do call :do_it %%i
set /A next= 1 + %next%
echo copy player.txt player%next%.txt

endlocal
goto :eof

:do_it
if /I [%1]==[player.txt] goto :eof
set xxx=%1
set xxx=%xxx:~6%
set xxx=%xxx:~0,-4%
if %xxx% GTR %next% set next=%xxx%
</code>

Hvis du har problemer med denne version bør du slette første linie (@echo off) inden du laver et screen-dump.
Avatar billede 24u Juniormester
13. juni 2003 - 01:24 #16
Hmm det var bedere end det andet.. men det virker ikke rigtigt ;o)
Den skriver at den kopierer filen, med det nye navn, men der sker intet

www.supremekillers.dk/gemfil1.jpg her er en dump af programmet
www.supremekillers.dk/gemfil2.jpg her er en dump af det dir hvor fille gerne skulle smides hen.. De 2 players.txt man kan se er nogle jeg selv har oprettet.

-24U-
Avatar billede 24u Juniormester
13. juni 2003 - 01:35 #17
Jeg tror du har glemt selve copy funktionen.. efter hvad jeg kan se ;o)
har prøvet at sætte den (copy players.txt players%next%.txt) ind efter "if %xxx% GTR %next% set next=%xxx%"

Men der forhøjer den ikke nummeret, men tilføjer et s til filen.. og efter 10 klik på filen har man altså nogle lange navne ;o)

-24U-
Avatar billede 24u Juniormester
13. juni 2003 - 01:41 #18
Æhh.. kan ikke finde ud af hvad det er for en funtion der søger efter den tidliger skrevne fil?? altså så den ikke skriver players1.txt igen og igen..
kan godt se du har lavet en funktion der forhøjer tallet, og en funktion der skriver det forhøjet tal i filen..

hmmm..

-24U-
Avatar billede bertelbrander Novice
13. juni 2003 - 01:51 #19
Det er utroligt så mange fejl der kan gemme sig i så simpelt script, prøv dette:
<code>
@echo off
setlocal
set next=0
for /F %%i in ('dir /B player*.txt') do call :do_it %%i
set /A next= 1 + %next%
copy players.txt players%next%.txt

endlocal
goto :eof

:do_it
if /I [%1]==[players.txt] goto :eof
set xxx=%1
set xxx=%xxx:~7%
set xxx=%xxx:~0,-4%
if %xxx% GTR %next% set next=%xxx%
</code>
Avatar billede bertelbrander Novice
13. juni 2003 - 01:54 #20
"funktionen" der finder tidligere filer er 'dir /B player*.txt'

do_it funktionen finder tallet (xxx) efter players og assigner det til next hvis det er større end next

set /A next= 1 + %next%
Tæller next en op, inden kopiering
Avatar billede 24u Juniormester
13. juni 2003 - 16:14 #21
Jaaa nu virker det.. måtte dog lige sætte et s på i "for /F %%i in ('dir /B player*.txt') do call :do_it %%i"

ellers virkede det ikke.
Og hvis jeg nu ville have den skulle kopiere filen fra et sted og smide den et andet sted ville copy funktionen vel se sådanne ud :

copy c:\players.txt f:cheaters\players%next%.txt

ikke?? og så hvis man lige lavede linien :

"for /F %%i in ('dir /B player*.txt') do call :do_it %%i"

om til :

for /F %%i in f:cheaters\('dir /B player*.txt') do call :do_it %%i

Ellers kan den vel ikke se om filen eksistere..

-24U-
Avatar billede bertelbrander Novice
13. juni 2003 - 16:49 #22
Næsten rigtigt:

copy c:\players.txt f:cheaters\players%next%.txt
skal være:
copy c:\players.txt f:\cheaters\players%next%.txt

for /F %%i in f:cheaters\('dir /B players*.txt') do call :do_it %%i
skal laves om til:
for /F %%i in ('dir /B f:\cheaters\players*.txt') do call :do_it %%i
Avatar billede 24u Juniormester
13. juni 2003 - 17:03 #23
Nu funker den.. det kom til at se sådanne ud :

<code>
@echo off
setlocal
set next=0
for /F %%i in ('dir /B c:cheaters\players*.txt') do call :do_it %%i
set /A next= 1 + %next%
copy C:\Programmer\NovaLogic\"Delta Force Task Force Dagger"\players.txt c:\cheaters\players%next%.txt

endlocal
goto :eof

:do_it
if /I [%1]==[players.txt] goto :eof
set xxx=%1
set xxx=%xxx:~7%
set xxx=%xxx:~0,-4%
if %xxx% GTR %next% set next=%xxx%
</code>


Smider du ikke lige et svar??

-24U-
Avatar billede bertelbrander Novice
13. juni 2003 - 20:31 #24
Jeg laver ikke svar.
Avatar billede 24u Juniormester
13. juni 2003 - 21:27 #25
øhh det er jo det der ligesom er pointen med denne side ikke?? og man må jo sige at du løste opgaven til UG++

-24U-
Avatar billede 24u Juniormester
16. juni 2003 - 01:16 #26
hey bertelbrander!! svar nu please!! jeg vil ikke have dette spg. til at ligge og flyde, og hvis jeg selv svarer bliver det betegnet som snyd!!..

-24U-
Avatar billede bertelbrander Novice
16. juni 2003 - 01:46 #27
Hvis det er så stort et problem for dig...
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