Potrzebuję polecenia, które można uruchomić z wiersza polecenia, aby utworzyć folder dla każdego pliku (na podstawie nazwy pliku) w katalogu, a następnie przenieść plik do nowo utworzonych folderów.
Przykład:
Folder początkowy:
Dog.jpg
Cat.jpg
Poniższe polecenie działa świetnie podczas tworzenia folderu dla każdej nazwy pliku w bieżącym katalogu roboczym.
for %i in (*) do md "%~ni"
Folder wyników:
\Dog\
\Cat\
Dog.jpg
Cat.jpg
Muszę pójść o krok dalej i przenieść plik do folderu.
Chcę osiągnąć:
\Dog\Dog.jpg
\Cat\Cat.jpg
Czy ktoś może mi pomóc jednym poleceniem, aby to wszystko zrobić?
windows
batch-file
Tomek
źródło
źródło
for %i in (*) do cmda && cmdb
B) może powtórzyć najpierwfor %i in (*) do @ECHO cmda && cmdb
C) może dodać Myślę, że przejście przez podkatalogi to / R.for %i in (*) do move "%~i" "%~ni"
Nawet to może nie być wystarczająco dobre, ponieważ może mieć skutki uboczne, gdy folder docelowy nie istnieje (np. Pliki są „przenoszone” nad sobą, stąd ich nazwa). Łatwym rozwiązaniem byłoby połączenie obu poleceń w następujący sposób:for %i in (*) do md "%~ni" && move "%~i" "%~ni"
Polecenie zakłada, że katalogi jeszcze nie istnieją.cmda && cmdb
następniecmdb
zostanie wykonany tylko wtedy, gdycmda
był udany. Jeśli miałbyś użyćcmda & cmdb
zamiast tego, drugie polecenie zostanie wykonane niezależnie. W rzeczywistości pojedynczy znak ampersand (&
) jest tylko separatorem poleceń, a znak podwójny ampersand (&&
) jest warunkowy . Komendy, które nie ustawiająerrorlevel
wartości, nie powinny być używane z tym ostatnim.Wystarczy wykonać te polecenia szeregowo:
Aby utworzyć foldery dla każdego pliku:
Aby przenieść każdy plik do jego folderu:
źródło
To zrobi, jeśli masz jakieś foldery, takie jak: przykład lata \ Nazwa pliku.mp4
wyświetli listę wszystkich plików 1. poziomu folderu; wyświetla listę wszystkich * .mp4 i * .mkv utworzy foldery 2-poziomowe z nazwą pliku i przeniesie wszystkie te same pliki nazw w folderze 1-go poziomu do folderu 2-go poziomu, uruchom go w folderze podstawowym lata.
Jeśli nie masz folderu YEARS pierwszego poziomu, możesz po prostu ominąć pierwszy i uruchomić drugi krok, uruchom go w folderze podstawowym nazwy pliku.
&& zapewni, że poprzednie mkdir% ERRORLEVEL% wynosi 0, aby uruchomić przenoszenie plików
Aby przetestować, użyj tego:
źródło