Προς το περιεχόμενο

Batch File Pou Na Kanei Copy To Proto Arxeio Pou Vriskei Apo Ena Fakelo


moameth

Προτεινόμενες αναρτήσεις

Δημοσ.

paidia kalhspera se olous...

mhpos mporei na voithisi kaneis sto exhs, thelo na ftiaxo ena batch arxeiakh to opoio na mou kanei copy to proto arxeio pou vreiskei se ena fakelo.

 

o fakelos exeis mesa arxeia exe.

 

opoios mporei as voithisi....

 

thx ek ton proteron

Δημοσ.

Δηλαδή το όνομα του αρχείου αλλάζει?

γιατι αν δεν αλλάζει δεν υπάρχει λόγος να κάνεις κάτι τετοιο.

Δημοσ.

Οντως δωσε λιγο περισσοτερα στοιχεια. Τι θες να πετυχεις. Ειναι καποιος sυγκεκριμενος φακελος που θα ψαχνει και καποιος συγκεκριμενος στον οποιο θα γραφει η θες και αυτα να ειναι παραμετρικα?

Δημοσ.

exo logo pou sas eipa ta parapano.

 

mesa o fakelos exei cd-key loader gia games.

 

thelo na kalo to prwto arxeio pou vrisketai mesa ston fakelo kai meta h na to metafero kai na to xrhsimopoio h na to xrhsimopoio kai na to kano rename, etsi oste o epomenos pou to kalh na vriskei to epomeno file.

 

me katalavate?

Δημοσ.

moameth, η έλλειψη εντολής αντίστοιχης με την head των Unix-οειδών λειτουργικών κάνει τα πράγματα λίγο πιο περίπλοκα από ό,τι θα έπρεπε να είναι. Κατά τα άλλα, μπορούμε να το ξεπεράσουμε με μία «μαμουνιά». Αποθηκεύουμε τα filenames των exe στο αρχείο list.txt με ανάποδη σειρά και μετά με ένα βρόχο θέτουμε ως τιμή της μεταβλητής FIRST κάθε φορά την επόμενη γραμμή του list.txt, άρα στο τέλος του βρόχου η FIRST θα περιέχει το filename του πρώτου exe στον τρέχοντα κατάλογο:

 

>
@echo off
rem CopyFirstExe.cmd

dir /b /o-n *.exe > list.txt
for /F %%f in (list.txt) do set FIRST=%%f
copy %LAST% [color="DarkOrange"]c:\path[/color]

 

Προφανώς, θα αλλάξεις το c:\path στο path που θες εσύ...

Δημοσ.

Έχεις δίκιο, μου ξέφυγε στην τελευταία γραμμή άλλο όνομα μεταβλητής. Ο σωστός κώδικας είναι:

 

>
@echo off
rem CopyFirstExe.cmd

dir /b /o-n *.exe > list.txt
for /F %%f in (list.txt) do set FIRST=%%f
copy %FIRST% [color="DarkOrange"]c:\path[/color]

Δημοσ.
file mou pali ta idia kanei, vevaia o fakelos pou kano test exei mesa bat arxeia alla pistevo oti den exei shmasia

 

Έχει τεράστια σημασία. Αν στο φάκελο που το τεστάρεις δεν υπάρχουν καθόλου exe αρχεία, τελικά η μεταβλητή FIRST θα έχει κενή τιμή, άρα η τελευταία εντολή θα ισοδυναμεί με:

 

>
copy c:\path

 

...που όντως θα αντιγράφει όλα τα αρχεία από το c:\path στον τρέχοντα κατάλογο. Βάλε τουλάχιστον ένα αρχείο exe μέσα στον κατάλογο από όπου τρέχεις το cmd και δοκίμασε. Εναλλακτικά, άλλαξε στον κώδικα την εντολή dir ως εξής:

 

>
dir /b /o-n *.* > list.txt

 

...οπότε θα δουλεύει για όλους τους τύπους αρχείων και θα αντιγράφει το πρώτο από αυτά...

Δημοσ.

anti gia *.exe pou eixes esy evala *.bat, to katalava auto kai logiko alloste.

 

exo sto fakelo 4 arxeia (01.bat,02.bat,03.bat,04.bat), tora doulevei mou kanei copy to proto arxeio alla otan xanaektelo to batch mou kanei pali to idio

pos mporo me kapoion tropo na to metonomazo h na to svino apo to fakelo kai meta thn xrhsi tou na to xanaepanafero

 

an exeis msn milame apo ekei.

 

se euxaristo para poly pantos gia thn voithia mexri edo

Δημοσ.

Piece of cake! :-D Αρχικά εκτελείται αυτό:

 

>
@echo off
rem MoveFirstFile.cmd

set MOVETO=C:\path
dir /b /o-n *.* > list.txt
for /F %%f in (list.txt) do set FIRST=%%f && echo %MOVETO%\%%f > list2.txt
move %FIRST% %MOVETO%
move /y list2.txt list.txt

 

Πάλι, αντί για C:\path βάζεις αυτό που θες εσύ. Κάνεις ό,τι είναι να κάνεις και μετά καλείς αυτό:

 

>
@echo off
rem RestoreFirstFile.cmd

for /F %%f in (list.txt) do move %%f .
del list.txt

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...