Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Переместить все файлы JPG и TXT, заканчивающиеся на цифры 0,1,2...9 в номерные папки (http://forum.oszone.net/showthread.php?t=308234)

use809 20-11-2015 23:07 2577219

Переместить все файлы JPG и TXT, заканчивающиеся на цифры 0,1,2...9 в номерные папки
 
Нужно переместить все файлы JPG и TXT, ЗАКАНЧИВАЮЩИЕСЯ на цифру 0 в папку 0, на цифру 1 - в папку 1, на цифру 2 - в папку 2, и так далее до 9 включительно.
Делал так:
md 1
md 2
md 3
md 4
md 5
md 6
md 7
md 8
md 9
md 0
Затем вроде бы логично сделать так:
move *0.jpg 0\
move *1.jpg 1\
move *2.jpg 2\
move *3.jpg 3\
move *4.jpg 4\
move *5.jpg 5\
move *6.jpg 6\
move *7.jpg 7\
move *8.jpg 8\
move *9.jpg 9\
move *0.txt 0\
move *1.txt 1\
move *2.txt 2\
move *3.txt 3\
move *4.txt 4\
move *5.txt 5\
move *6.txt 6\
move *7.txt 7\
move *8.txt 8\
move *9.txt 9\

Но почему-то работает не так как мне нужно, а кидает разнозаканчивающиеся файлы. Прошу помощи. Спасибо!

blacktor 21-11-2015 03:29 2577280

move **0.jpg 0\

две звездочки

Georgio 21-11-2015 04:03 2577286

Тайна "непослушных" файлов.




Глава первая. Разгадка тайны.


Имена Ваших файлов не соответствуют формату 8.3 (то есть число символов в самом имени больше 8-ми, или (и) в нём присутствуют пробелы, неанглийские буквы, неклавиатурные символы или (и) символ "№").

Для интерпретатора Командной строки файлы с такими именами присутствуют как бы в двух ипостасях -- как файл с обычным именем и как файл с коротким именем, оканчивающимся в Вашем случае на "~1".

Поэтому файлы с обычными именами, оканчивающимися на "0" всё-таки перемещаются в папку "0", несмотря на то, что короткие имена Ваших файлов, как уже сказано, оканчиваются на "1" ("~1"), так как в порядке выполнения сценария перемещение в папку "0" является первой командой, а вот все остальные файлы, независимо от того, на что оканчивается обычное имя, перемещаются в папку "1", соответствующую цифре, на которую оканчиваются их короткие имена.

При попытке выполнения команд для перемещения файлов в папки с именами от "2" до "9" происходит ошибка, так как соответствующие файлы уже отсутствуют в исходной папке, будучи перемещёнными ранее.



Глава вторая (и последняя). Что делать?


Нужно стараться не использовать команды с подстановочными знаками из "школьного" курса "батаники".

Вот решение Вашей задачи:

Код:

@echo off

for /l %%i in (0 1 9) do 2>nul (
 for /f "delims=" %%j in ('dir/a-d/b "*%%i.jpg" "*%%i.txt"^| findstr/irc:"^.*%%i\....$"') do (
  md "%%i"& move "%%j" "%%i\"
 )
)

exit/b 0

.


Время: 14:13.

Время: 14:13.
© OSzone.net 2001-