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

Make a Batch file...


afnman

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

Καλησπέρα,

Θελω ενα batchaki που να κανει copy-paste

Σαν αυτο...

 

copy pacman.bat C:\Documents and Settings\All Users\Start Menu\Προγράμματα\Εκκίνηση\

pause;

 

 

Το προβλημα μου ειναι οτι οταν τρέχει,δεν αναγνωριζει το path γιατι αντικαθιστα τα ελληνικα με "κινέζικα"...Αντιθετα αμα κάνω manual to cp απο console ,μου λειτουργει κανονικα.

Προσπαθησα να το σωσω με το notepad σε διαφορα Formats.. (με UTF8 ουτε καν ανοιγει console)

Ηelp me λιγο γιατι δεν τα παω καλα με κωδικοσελιδες κτλ...

 

P.S

Το bachaki θελω να παιζει ,ανεξαρτητα αν εχει ελληνικα ή αγγλικα windows.

thnk u....

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το βασικότερο πρόβλημα δεν είναι τα ελληνικά. Είναι ότι στα αγγλικά Windows ο φάκελος βρίσκεται στο C:\Documents and Settings\All users\Start Menu\Programs\Startup

Δηλαδή θα πρέπει να αντιγράφεις σε διαφορετικό φάκελο.

Επίσης μπορεί να μην είναι καν στο C:, αλλά να είναι στο D:

Επίσης αν δεν έχει Windows XP και έχει κάτι άλλο (από 98 μέχρι Vista) μπορεί να μην είναι καν σ' αυτό το μονοπάτι.

 

Αν θες να καλύψεις τέτοιες περιπτώσεις, δε θες batch file αλλά πρόγραμμα που θα καλεί τη SHGetFolderPath ή τη SHGetFolderLocation:

http://msdn2.microsoft.com/en-us/library/bb762181(VS.85).aspx

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σιγουρα γινεται και με batch file, αν και θελει προσοχη να καλυψεις ολες τις περιπτωσεις.

 

Μια quick and dirty λυση

 

>
@echo off
chcp 1253

if exist "%ALLUSERSPROFILE%\Start Menu\Programs\Startup" copy pacman.bat "%ALLUSERSPROFILE%\Start Menu\Programs\Startup"

if exist "%ALLUSERSPROFILE%\Start Menu\Προγράμματα\Εκκίνηση" copy pacman.bat "%ALLUSERSPROFILE%\Start Menu\Προγράμματα\Εκκίνηση"

 

Αν θες και vista πρεπει να δεις τα αντιστοιχα paths ποια ειναι, δεν τα ξερω. Το ιδιο και για 2000/ΝΤ αν και μαλλον ειναι τα ιδια, αλλα δεν ξερω κατα ποσο το chcp 1253 παιζει εκει. Το τελευταιο χρειαζεται για να καταλαβαινει ελληνικα.

 

Αν θες 98 επισης ειναι δυσκολο. Εκτος απο το chcp 1253 που αμφιβαλλω αν παιζει, το if exist δουλευει μονο για αρχεια και οχι για folders οποτε θα πρεπει να ψαχνεις για ενα αρχειο με διθαφορετικο ονομα στα ελληνικα και αγγλικα

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μήπως θέλει και "" στο ..

copy pacman.bat C:\Documents and Settings\All Users\Start Menu\Προγράμματα\Εκκίνηση\

 

if exist "%ALLUSERSPROFILE%\Start Menu\Programs\Startup" pacman.bat "%ALLUSERSPROFILE%\Start Menu\Programs\Startup"

 

if exist "%ALLUSERSPROFILE%\Start Menu\Προγράμματα\Εκκίνηση" pacman.bat "%ALLUSERSPROFILE%\Start Menu\Προγράμματα\Εκκίνηση"

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπέρα,

Θελω ενα batchaki που να κανει copy-paste

Σαν αυτο...

 

copy pacman.bat C:\Documents and Settings\All Users\Start Menu\Προγράμματα\Εκκίνηση\

θελω να παιζει ,ανεξαρτητα αν εχει ελληνικα ή αγγλικα windows.

thnk u....

 

Μπορείς να το κάνεις με ένα σκριπτάκι μαζί με το μπατσάκι ;)

Στον ίδιο φάκελο που είναι το .bat αρχείο σου δημιουργείς το CpyToStartup.js και γράφεις μέσα τα παρακάτω

>
var strStartup = WScript.CreateObject("WScript.Shell").SpecialFolders("AllUsersStartup");
var f = WScript.CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0));
f.Copy(strStartup + "\\" + f.Name);

 

Τώρα μέσα στο batch σου γράφεις

>
cscript //B CpyToStartup.js "pacman.bat"

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

βασικα πρεπει να πας σε cmd και πας στο "C:\Documents and Settings\All Users\Start Menu\Προγράμματα\Εκκίνηση\" και να βρεις πως γραφετε το short name generated for non-8dot3 file και αυτο θα το κανεις πηγαινωντας πρωτα στο C:\Documents and Settings\All Users\Start Menu\ dir /Χ για να δεις πως μεταφραζει το ελληνικο "Προγραμματα" (θα σου βγαλει κατι χαρακτηρες το οποιο ειναι το short name generated for non-8dot3 file), το ιδιο θα κανεις και για το εκκινηση, αφου μπεις με dir /x απο τον υποφακελλο προγραμματα και μετα θα παρεις το σωστο path για copy ;)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 3 χρόνια αργότερα...

Επαναφέρω το θέμα.

 

εχω κάνει ενα .bat αρχείο που κάνει copy -paste εναν φάκελο σε εναν άλλον.

το bat είναι ευτό.

 

@echo off

copy "c:\folderone\sub\file.txt" "c:\backup"

 

Πως θα γίνει οταν κάνει paste να μην το κάνει στο c:backup αλλα στο c:\backup\σημερινή ημερομηνία??

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Υποθέτω ότι όπου «σημερινή ημερομηνία» εννοείται κάποιο timestamp του τύπου π.χ. YYMMDD. Οπότε μπορείς να εκμεταλλευτείς τη μεταβλητή περιβάλλοντος date των Windows:

 

>
@echo off
set TARGETDIR=C:\backup\%date:~6,2%%date:~3,2%%date:~0,2%
if not exist %TARGETDIR% mkdir %TARGETDIR%
copy c:\folderone\sub\file.txt %TARGETDIR%

 

Αν θέλεις στο timestamp να προσθέσεις και ώρα-λεπτά-δευτερόλεπτα, μπορείς να χρησιμοποιήσεις κατά παρόμοιο τρόπο τη μεταβλητή περιβάλλοντος time.

 

 

ΥΓ: Αν δε σε ενοχλεί τυχόν μήνυμα του τύπου "A subdirectory or file c:\backup\τάδε already exists", μπορείς αντί για έλεγχο ύπαρξης του target directory, να καλέσεις απευθείας την mkdir

ΥΓ2: Προσοχή στο locale! Δεν το έλεγξα, αλλά υποπτεύομαι ότι μπορεί τα ψηφία του μήνα και της ημέρας του μήνα να έχουν αντίθετη θέση από αυτήν που υποθέτει το παραπάνω παράδειγμα...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Parsifal αυτό για την ημερομηνία το θέλω διότι θέλω κάθε μέρα να κάνει copy-paste εναν φάκελο.

 

Π.χ Ο φάκελος leonidas θα γίνεται κάθε μέρα paste στον φάκελο insomnia. Απ'οτι καταλαβαίνεις όμως την δεύτερη φορά που θα πάει να γίνει paste στον φάκελο insomnia, θα βγάλει error γιατι θα υπάρχει ήδη φάκελος με το όνομα leonidas!

 

ετσι θέλω να γράφετε ο φάκελος σαν leonidas20110706 την άλλη μέρα leonidas20110707 κτλ..

 

ή κάτι παρόμοιο τελος πάντων!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Parsifal αυτό για την ημερομηνία το θέλω διότι θέλω κάθε μέρα να κάνει copy-paste εναν φάκελο.

 

Π.χ Ο φάκελος leonidas θα γίνεται κάθε μέρα paste στον φάκελο insomnia. Απ'οτι καταλαβαίνεις όμως την δεύτερη φορά που θα πάει να γίνει paste στον φάκελο insomnia, θα βγάλει error γιατι θα υπάρχει ήδη φάκελος με το όνομα leonidas!

 

ετσι θέλω να γράφετε ο φάκελος σαν leonidas20110706 την άλλη μέρα leonidas20110707 κτλ..

 

ή κάτι παρόμοιο τελος πάντων!!

Θα βοηθούσε να μας έλεγες τι ακριβώς πρόβλημα έχεις με το batch του parsifal,αν πάρω το προφανές μάλλον έχεις άλλη έκδοση windows και δεν σου βγάζει σωστό αποτέλεσμα για ελληνικά windows 7 το σωστό είναι αυτό

 

@echo off

set TARGETDIR=C:\backup\%date:~4,2%_%date:~7,2%_%date:~10,4%

if not exist %TARGETDIR% mkdir %TARGETDIR%

copy c:\folderone\sub\file.txt %TARGETDIR%

 

Αν θες να λέει και leonidas πριν απλά το προσθέτεις και αυτό π.χ.

 

set TARGETDIR=C:\backup\leonidas_%date:~4,2%_%date:~7,2%_%date:~10,4%

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγραψα αυτό ακριβώς

 

@echo off

set TARGETDIR=C:\backup\%date:~6,2%%date:~3,2%%date:~0,2%

if not exist %TARGETDIR% mkdir %TARGETDIR%

copy c:\leo\file.txt %TARGETDIR%

 

Δημιούργησα στον C μου εναν φάκελο που τον ονόμασα leo και εκει μέσα έκανα ενα αρχείο που το ονόμασα file.txt. έτρεξα το .bat αλλα δεν γράφτηκε τίποτα στον C:backup...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Βοήθα λιγάκι και εσύ,άνοιξε ένα cmd,πάνε δηλαδή αναζήτηση γράψε cmd και τρέξε το cmd.exe,εκεί κάνε copy/paste το ακόλουθο %date:~6,2%%date:~3,2%%date:~0,2% δες τι θα βγάλει,αν δεν βγάλει σωστό αποτέλεσμα δοκίμασε και αυτό που είπα εγώ δηλαδή %date:~4,2%_%date:~7,2%_%date:~10,4% πρέπει να καθορίσουμε πρώτα πως θα βγάλει σωστό όνομα από την ημερομηνία για να συνεχίσουμε.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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