BAT zmieniający nazwę najmniejszego pliku w folderze

2014-06-18 11:52
0

Hej !
Mam prośbę - mam np w folderze c:/txt różne pliki txt - są one wielkości od 0 (zera) kb do kilku mb.
I teraz chciałbym aby BAT wybrał najmniejszy plik txt, ALE o wielkości minimum 1kb i zmienił jego nazwę na np. abc.txt
Jeśli w folderze znajduje się kilka plików o takiej samej najmniejszej wielkości to BAT może wybrać pierwszy z rzędu i zmienić nazwę, a resztę pominąć, albo zmienić po kolei nazwy każdego na abc2.txt abc3.txt itd
Będę bardzo wdzięczny za pomoc.

edytowany 2x, ostatnio: endriuuu, 2014-06-18 11:53

Pozostało 580 znaków

2014-06-21 13:10
0

nie musi być BAT - może być c++ itp

Pozostało 580 znaków

2014-06-21 13:43
0

http://stackoverflow.com/ques[...]w-can-i-get-a-files-size-in-c
http://stackoverflow.com/ques[...]s-in-a-directory-using-c-or-c

hmm... czemu nie napiszesz samemu?


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!

Pozostało 580 znaków

2014-06-21 13:59
0

za małą posiadam wiedzę ...

Pozostało 580 znaków

2014-06-21 14:50
fadsfa

poprawione dla plików zawierających spację:

@Echo off
set najmniejszy_plik=
set najmniejszy_rozmiar=99999999999999
for %%i IN (*.txt) DO call :sprawdz_rozmiar "%%i"

if "%najmniejszy_plik%"=="" goto nie_znaleziono

echo Najmniejszy plik: %najmniejszy_plik% (%najmniejszy_rozmiar% bajtow)
ren "%najmniejszy_plik%" abc.txt
goto end

:sprawdz_rozmiar
set rozmiar=%~z1

rem Nie mniejszy niz 1kB
if /I %rozmiar% LSS 1024 goto end

if /I %rozmiar% LSS %najmniejszy_rozmiar% (
    set najmniejszy_rozmiar=%rozmiar%
    set najmniejszy_plik=%~1
)
goto end

:nie_znaleziono
echo Nie znaleziono pliku

:end

mógłby ktoś usunąć poprzedni wpis

Poprzedni post usunięty; A do kolorowania składni plików *.bat są znaczniki <code=winbatch>, tyle że nie ma przycisku, więc trzeba je wpisać ręcznie w poście; - furious programming 2014-06-21 18:46

Pozostało 580 znaków

2014-06-21 15:45
0

dzięki - ale jak ustawić aby program sprawdzał pliki w folderze c:\txt i tam je zapisywał ?

Pozostało 580 znaków

2014-06-21 17:57
fadsfa
1

po prostu zapisz ten plik w tym folderze, albo na początku skryptu ustaw "cd /d c:\txt", albo dopisz ścieżkę w linii z for

Pozostało 580 znaków

2014-07-01 15:13
0

No i cholera mam problem - gdy chcę uruchomić plik txt.bat który jest w katalogu txt innym plikiem bat - przez komendę call to zawsze wyskakuje mi: "w tym momencie 1024 było nieoczekiwane".
Gdy w pliku dodam ścieżkę na początku lub w lini z for to wyskakuje ten sam komunikat...

Działa tylko wtedy jeśli dam w innym pliku bat

cd c:\txt 
call txt.bat
cd..

ALE, później mam w tym pliku bat komendę:

@SetRecurcex5 long.txt short.txt wynik.txt

i ta komenda już nie działa - tak jakby nie widział już pliku SetRecurcex5.exe

dodanie znaczników <code class="winbatch"> - furious programming

edytowany 1x, ostatnio: furious programming, 2014-07-02 17:12

Pozostało 580 znaków

2014-07-01 15:17
0

Zamiast

cd..

daj

cd katalog_z_plikiem_SetResourcex5.exe

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2014-07-01 15:45
0

SetResourcex5.exe jest na c: więc próbowałem wcześniej tak robić czyli wstawiłem
cd c:\
ale jest to samo - dodałem prostą komendę
copy
i normalnie wyskakuje w oknie:

copy c:\txt\1.txt c:\2.txt
Liczba skopiowanych plików 1

a jak wstawię etap z cd to już nie piszę co kopiuje tylko samo : Liczba skopiowanych plików 1

edytowany 2x, ostatnio: endriuuu, 2014-07-01 15:50

Pozostało 580 znaków

2014-07-01 16:37
fadsfa
0

możesz skorzystać ze stosu zapamiętującego aktualny katalog

pushd - przechodzi do katalogu i zapamiętuje poprzedni
popd - wraca do poprzedniego folderu

wystarczy żeby na początku skryptu napisać:

pushd "%~dp0"

a na końcu

popd

żeby odpalić skrypt zawsze w folderze gdzie znajduje się skrypt

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0