Drobne podpowiedzi 1 (system)
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.
Kroki w celu dodania do paska “szybki dostęp”:
⊞ Win
+R
, wklej
shell:::{22877a6d-37a1-461a-91b0-dbda5aaebc99}
[OK]
- Menu Windows 10: “Przypnij do paska szybki dostęp” ➜
W Windows 11 wybieramy⋯
➜ - Dla takiego foldera zapewne warto ustawić sortowanie według daty modyfikacji.
- 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\
. - 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
⊞ Win
+i
albo Start \ Ustawienia- System \ Pamięć \
Skonfiguruj Czujnik pamięci lub uruchom go teraz (albo: Zmień sposób zwalniania miejsca) \ Zwolnij miejsce teraz \ Oczyść teraz
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.
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
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
napause&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 skryptdt.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 naexiftool.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 naFileName
. We wzorcu można użyć/
, co spowoduje, że wFileName
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/”.