Díky! A ještě dotaz - kdyby ten .bat byl uložen ve stejné složce, tak se nemusí nikam přepínat? Jinak řečeno, je akutuální složka defaultně ta, z níž ten .bat spouštím? V tom případě by ale mohlo hrozit, že ten soubor smaže sám sebe - nebo to je nějak zapovězeno?
A nebo dát tomu .bat naprosto fake datum. Postup např. změním datum v počítači na 2050, edituji bat, změním zpět. Je to ohavný hack (ale ten geniální for cyklus taky )
OK, udělal bych to tak, že do své složky udělám další složku a v ní bude bat. Tím bude zajištěno, že existuje ta nadřazená složka a že tedy bat má kde mazat ty soubory a nemůže tudíž smazat nic jiného.
Zápisu
cd složka
for /F "tokens=*" %%i in ('dir /o-d /b') do set lastfn=%%i
del %lastfn%
z výjimkou prvého řádku a prvního slova příkazu v posledním řádku nerozumím. Pokud bych tedy chtěl omezit smazané soubory na ty s určitou příponou (třeba .pri), jak to udělat?
Pre istotu doplnam text, ze viem, ze autor chcel bat subor a ten ktory tu je uz uvedeny je perfektny a nijaku mu nemienim "konkurovat" ale dovolujem si upozornit aj na inu moznost riesenia zadania…
Co tak to riesit cez wsh - Windows Script Host
Pokusil som sa zosmolit skript ktory z definovaneho adresara najde najnovsi a potom ho zmaze
Tento text cez notepad ulozit ako ZmazPosledny.js a potom spustit
// JavaScript Document
/* Create the FileSystemObject */
fso = new ActiveXObject("Scripting.FileSystemObject");
/* Tu je adresar z ktoreho chceme zmazat subor */
fsofolder = fso.GetFolder("C:\\temp");
/* Nacitaj zoznam suborov*/
colFiles = fsofolder.Files;
/* Deklaracia enumeratora */
fc = new Enumerator( colFiles );
/* Pomocna premena pre zoznam suborov */
var msg = "";
var Lastfile="";
var Lastdate="";
/* Cyklus pre vsetky subory - hladanie najnovsieho */
for (; !fc.atEnd(); fc.moveNext() )
{
/*Tu si mozes odfiltrovat podla typu suboru alebo to nedat vobec - vtedy bude hladat medzi vsetkymi subormi*/
if (fc.item().Name.indexOf(".htm",0)>-1)
{
var f = fso.GetFile( fc.item()) ;
if (f.DateLastModified >Lastdate)
{
Lastfile=fc.item();
Lastdate=f.DateCreated;
}
msg += fc.item() +"\n";
}
}
/* Ukaz vsetky subory z adresara */
//WScript.Echo( msg );
/*Zobraz meno suboru, ktory bude zmazany*/
WScript.Echo( Lastfile );
//if (Lastfile>"")
//fso.DeleteFile( Lastfile );
Teraz tam je nastaveny adresar c:\temp
bude hladat iba subory typu *.html
Zatial ho iba ukaze… Az odkomentovanim poslednych dvoch riadkov to bude naozaj mazat