Ostatnio używane foldery * Zwalnianie miejsca na dysku C: * Hurtowa zmiana daty folderów * Hurtowa zmiana daty, a także nazwy zdjęć/filmów


Ostatnio używane foldery

.. to trochę co innego niż często używane foldery, które pojawiają się po włączeniu (⊞ Win+E) eksploratora plików.

Przypnij_do_szybki_dostep.png Kroki w celu dodania do paska “szybki dostęp”:

  1. ⊞ Win+R, wklej
    shell:::{22877a6d-37a1-461a-91b0-dbda5aaebc99} [OK]
  2. Menu Windows 10: “Przypnij do paska szybki dostęp” ➜ Eksplorator_przypnij.png
    W Windows 11 wybieramy
  3. Dla takiego foldera zapewne warto ustawić sortowanie według daty modyfikacji.
  4. Podobnie można przypiąć “Niedawno używane elementy” tj. pliki i foldery: ⊞ Win+R, wklej: shell:recent [OK]
    - to jest folder %AppData%\Microsoft\Windows\Recent\.
  5. Uwaga - jeśli dopuszczasz inne osoby do pracy na Twoim koncie Windows to powyższe wskazówki mogą nie być odpowiednie. Generalnie każdy powinien pracować na osobistym koncie Windows, a przełączanie jest wygodne.



Zwalnianie miejsca na dysku C:

W Win 10 jest wbudowanych kilka ciekawych opcji zwalniania miejsca na dysku C:

https://support.microsoft.com/pl-pl/help/12425/windows-10-free-up-drive-space

Start-ustawienia.png

  • ⊞ Win+i albo Start \ Ustawienia
    • System \ Pamięć \
  1. Zwolnij_miejsce_teraz.png Skonfiguruj Czujnik pamięci lub uruchom go teraz (albo: Zmień sposób zwalniania miejsca) \ Zwolnij miejsce teraz \ Oczyść teraz

Zmien_lok_zapisywania.png

Można tu też wspomnieć o możliwości przesuwania foldera na inny dysk z dysku systemowego (np. gdy mamy mały dysk SSD) i tworzeniu dowiązania udającego, że folder jest na dysku systemowym

Przykład w linii poleceń Windows (uruchom CMD)

C:\mklink /j "C:\NazwaPseudoFoldera" "D:\Scieżka\NazwaIstniejącegoFoldera"



Hurtowa zmiana daty folderów

Podczas kopiowania zawartości dysku, np. po zakupie nowego komputera, na ogół wszystkie foldery uzyskują datę z momentu kopiowania. Na nasze szczęście pliki mają prawdziwe daty, ale gubienie faktycznych dat dla folderów jest kłopotliwe. Przecież nie raz chcemy coś przeszukać i nie musielibyśmy zaglądać do folderów, które nie mają dat w interesującym nas zakresie.

Touch32.gif

Można do tego wykorzystać aplikację, która potrafi ustawiać datę folderu na na podstawie dat plików/folderów wewnętrznych. Przykładem jest mój programik Touch32.exe.

Aby dopasować daty folderów do plików i folderów wewnętrznych należy w jednej ze ścieżek Path (w menu START zacznij pisać “Edytuj zmienne środowiskowe dla konta” aby zobaczyć listę ścieżek) umieścić plik Touch32.exe oraz dt.cmd o zawartości jak poniżej (dla wygody nazwa powinna być dość krótka). W Eksploratorze plików Eksplorator_dt.png ustawiamy się w folderze dla którego (i dla podfolderów) chcemy zmienić datę. W pasku adresu (tam gdzie jest “Ten komputer”) wpisujemy dt.cmd 0 albo krócej dt 0 i następuje wykonanie skryptu. (Jednak lepiej nie pomijać .cmd). Najpierw podfoldery są ustawiane na datę 1980-01-01, a potem na datę jak najnowszy wewnętrzny plik lub folder.

@echo off & chcp 1250
:: Set date and time for folder like it newest file or folder
if [%1] EQU [0] for /D /r %%G in (*.*) do Touch32.exe "%%G" 1980-01-01
if [%1] NEQ [1] for /D /r %%G in (*.*) do call :DirLastFile "%%G"
call :DirLastFile "."
goto:eof
:DirLastFile
  for /f "tokens=*" %%i in ('dir "%~1\*.*" /b/o-d') do (
    Touch32.exe "%~1" /f "%~1\%%~i" & exit /b )
  Touch32.exe "%~1" 1980-01-01

W tym skrypcie przeglądane są foldery wewnętrzne oraz bieżący i wykonywana jest dla nich procedura DirLastFile.

  • W procedurze DirLastFile odbywa się zamiana daty folderu na
    • datę najnowszego pliku/folderu wewnętrznego
    • albo 1980-01-01, gdy dany folder jest pusty
    • Pętla for /f przebiega po liście plików/folderów posortowanych od daty najnowszej /o-d i jest przerywana przy pierwszym elemencie & exit /b. Ten element jest referencją dla daty folderu podanego jako parametr tej procedury.
  • Jeśli trzeba podglądnąć co się dzieje to należy zamienić goto:eof na pause&goto:eof. Można też pominąć & chcp 1250.
  • Gdy w ramach folderu są tylko podfoldery i nie ma plików, to w zależności od kolejności przeglądania folderów data aktualnego folderu może pozostać nie uaktualniona. Można wtedy wykonać ponownie skrypt dt.cmd (bez parametru 0 - który jest używany jednorazowo na początek). A najlepiej wejść do wewnątrz foldera, który nie skorygował daty i tam wykonać ten skrypt dt.cmd.
  • dt.cmd 1 wykona szybkie działanie nierekurencyjne - tylko dla bieżącego folderu dostosuje jego datę dla najnowszego pliku lub folderu wewnętrznego.

Uwaga - program Touch32 nie jest gruntownie przetestowany – używasz go na własną odpowiedzialność (nie ma zbyt wielu użytkowników, choć jeden używa go od wielu lat). Sprawdź jego działanie na początek na niewielkiej na kopii danych. Proszę o kontakt w przypadku zauważenia błędów.

Aplikacja Attribute Changer (https://www.petges.lu/) pozwala zdaje się na hurtową zmianę czasu modyfikacji folderów na podstawie dat wewnętrznych plików/folderów. Podobno także pozwala na zmianę dat zdjęć na podstawie metadanych. Można monitorować stan tej aplikacji, bo wygląda na to, że jest aktualnie rozwijana.

Notatki

1. Zamiast daty początkowej 1980-01-01 można by brać datę z jakiegoś napotkanego pliku wewnątrz folderów …
set "_AnyFile=" & call :FindAnyFile "%CD%"
::... use "%_AnyFile%"
goto:eof
:FindAnyFile
for /R %1 %%G in (*.*) do (set "_AnyFile=%%G" & exit /b)

2. Gdyby pobierać tylko listę plików ‘dir /a-d’ to dla pustego folderu pojawia się napis ‘File Not Found’, który można przekierować do NUL: ‘2>NUL’, np.:
@for /f "tokens=*" %%i in ('dir "EmptyFolder\*.*" /b/o-d/a-d 2^>NUL') do (@echo %%i)

.

Hurtowa zmiana daty zdjęć i filmów na podstawie metadanych

  • ExifTool by Phil Harvey to trochę surowo wyglądające narzędzie, ale korzystając z poniższych porad da się go wygodnie używać. Pobieram ZIP, umieszczam zawartość w jednej ze ścieżek Path (w menu START zacznij pisać “Edytuj zmienne środowiskowe dla konta” aby zobaczyć listę ścieżek). Plik exiftool(-k).exe. Kopiuję go na exiftool.exe.
  • Tam też tworzę plik et.cmd o zawartości jak poniżej (dla wygody nazwa powinna być dość krótka). Będę go używał w Eksploratorze plików - podobnie jak plik dt.cmd powyżej. Wywołanie et.cmd w folderze ze zdjęciami/filmami spowoduje, że daty modyfikacji tych plików staną się takie jak w metadanych np. exif.
    exiftool.exe -k "-exif:DateTimeOriginal>FileModifyDate" -if "$exif:DateTimeOriginal" .
    

    Opcja -k powoduje, że okienko z podsumowaniem działania pocenia nie znika samoczynnie. Należy wypróbować działanie na niewielkiej liczbie plików testowych i potem można usunąć -k.
    Polecenie pobiera zapisaną w metadanych datę zdjęcia/filmu (exif:DateTimeOriginal) i zapisuje ją (>) jako datę modyfikacji pliku (FileModifyDate) tylko wtedy (-if), gdy taka dana jest dostępna.
    Na końcu polcenia jest kropka ., która tu oznacza aktualny folder. Przetwarzaniu będą podlegać pliki znane ExifTool z tego foldera. Można tu użyć dowolnej wyliczanki folderów a także plików, np. *.jpg *.jpeg *.mov *.mp*.

  • Warto jeszcze wspomnieć o innych przełącznikach ExifTool: -r operacja dotyczy także podfolderów; -P przy operacjach zapisu zachowywana jest pierwotna data modyfikacji pliku.
  • Za pomocą ExifTool można skorygować czas pliku, np. przesunąć o +1 godzinę: exiftool.exe -alldates+=1 -FileModifyDate+=1 .

Hurtowa zmiana nazwy zdjęć i filmów

  • Można też zmienić nazwę pliku np. na taką jak data/czas wykonania zdjęcia/filmu:
    exiftool.exe -k -P -d "%Y-%m-%d %H-%M-%S%%+c.%%e" "-TestName<DateTimeOriginal" .
    Tutaj dla plików multimedialnych z foldera aktualnego . (pamiętaj, że można tu wstawić dowolną listę folderów i plików) jest wytwarzana nazwa pliku/foldera wg. wzorca podanego w -d - np. '2020-03-27 10-44-55.jpg'. Przy końcu wzorca jest %%+c, co poduje dodanie _1, _2, ... do nazwy pliku o ile istnieje inny plik o nazwie jak data/czas (właściwie to powinno być %%-c, co daje -1, -2, ..., ale tutaj _ jest lepsze). .%%e odtwarza oryginalne rozszerzenie pliku. Można tu też sobie dodać _%%f.%%e, żeby po dacie wystąpiła oryginalna nazwa pliku. TestName to taka testowa nazwa, która pozwala wypróbować działanie bez efektu końcowego. Gdy już przetestujemy działanie to zamieniamy to na FileName. We wzorcu można użyć /, co spowoduje, że w FileName znajdzie się i ścieżka i nazwa pliku. (W Windows do rozdzielania folderów jest używany \, ale może być używany/, co jest tutaj najwygodniejsze). Aby zapisać takie polecenie w pliku np. fnt.cmd należy podwoić znaki %: exiftool.exe -k -P -d "%%Y-%%m-%%d %%H-%%M-%%S%%%%+c.%%%%e" "-TestName<DateTimeOriginal" .
  • Podobną zmianę nazwy pliku można przeprowadzić na podstawie daty ostatniej modyfikacji pliku; np. fnft.cmd: exiftool.exe -k -ext "*" --ext . -P -d "%%Y-%%m-%%d %%H-%%M-%%S%%%%+c.%%%%e" "-TestName<FileModifyDate" .
    Użyte tutaj przełączniki -ext "*" --ext . oznaczają uwzględnianie wszystkich plików - nie tylko multimedialnych, choć z pominięciem tych, które nie mają żadnego rozszerzenia.

Powyższe operacje z ExifTool można wpisać w Total Commander do listy poleceń [Start]. Ostatnią kropkę zastępujemy przez %S - co będzie oznaczało wykonanie polecenia dla zaznaczonych plików/folderów w oknie Total Commander. exiftool.exe wpisujemy jako polecenie, a dalsze elementy jako parametry.

Inną pomocą w zapamiętaniu tych kilku poleceń *.cmd może być uruchomienie pliku -.cmd


Przykład - import zdjęć/filmów z telefonu/aparatu z automatyczną zmianą nazwy zdjęcia jak data:

W programie “Zdjęcia” ustawiam import zdjęć/filmów do foldera “Moje obrazy\Camera Roll”, który jest w Win10 PL pokazywany jako Moje “obrazy\z aparatu”.

  • Uruchamiam import-.cmd
  • podłączam telefon do komputera i importuję zdjęcia/filmy
  • naciskam jakiś klawisz np. SPACJA i następuje automatyczna zmiana nazwy plików na nazwę jak data wykonania np. “2020-03-20 19-44-55.jpg” z przeniesieniem ich do foldera powyżej o nazwie jak rok i dzień np. “../2020/2020-03-20/”.