Miért nem működik az alábbi kód?
Szeretnék egy olyan .bat file-t, amit ha elindítok, akkor készít egy másolatot az adott test.xlsx fájlról, úgy, hogy az új fájl neve legyen az aktuális fájl készítésének pontos időpontja (a legjobb az lenne, ha év_hónap_nap_óra_perc.xlsx lenne a végeredmény). Jelenleg oda hogy a kód szerint év_hónap_nap.xlsx másolatot kéne csinálni a célmappában, de amikor elindítom a kész .bat fájlt, akkor az semmit nem csinál.
Tudnátok segíteni, hogy mi gond a kódommal, és hogyan lehetne óra/percet is beleépíteni?
A kód:
call set currentDate=%date:/=-%
call set currentDate=%currentDate:~-10%
echo F|xcopy "C:\eredeti\TEST.XLSX" "C:\masolat (%currentDate%).XLSX" /Y /H /E /F
exit
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Én csak annyi tanácsot tudok adni, hogy ne az Excel táblázat megnyitott állapotában hívd meg a .bat fájlt ha sikerül majd megírni.
Nem lehet hogy a c:\ gyökérkönyvtárra nincs írási jogod, esetleg ha "run as administrator" opcióval futtatnád a .bat fájlt?
Próbáltam administratorként is nem működött.
Írási jogom tuti van, simán átmásolni a fájlt már sikerült, csak így nem, ezért a kódot tartanám hibásnak.
A fájlt még meg sem nyitottam egyszersem, csak létrehoztam tesztként.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Sajnos úgy is bezárul, de sikerült kifotóznom, nincsen hibaüzenet, egészen egyszerűen nem végzi el a parancsot:
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Ha CMD-ből (parancssorból) indítod el, akkor nem fogja bezárni.
Egyrészt az a gond, hogy rosszul zárójelezted és a kiterjesztés is a zárójelben van (ezért kérdezi meg, hogy fájl vagy könyvtár a cél).
Másrészt ott még lehet ibaüzenet, mielőtt bezáróik. Szóval kérlek, nyiss egy parancsort (start menü és cmd, aztán enter) és futtasd le abban.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Ha egy MÁSOLAT nevű mappába másolnád, akkor hiányzik egy fordított perjel, mert így a C: főkönyvtárába valószínűleg nem tudod másolni.
Meg az XCOPY /E paramétere miatt nálam ezt írta:
Cannot perform a cyclic copy
Egyébként a szóközök miatt kell zárójelezés? Kicserélheted aláhúzásokra.
Így működött:
set ujnev=%date% %time%
set ujnev=%ujnev:. =_%
set ujnev=%ujnev::=_%
set ujnev=%ujnev:~0,-6%
echo F|xcopy "c:\eredeti\akarmi.xlsx "c:\masolat\%ujnev%.xlsx" /y /h /f
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!