PDA

Показать полную графическую версию : Перенос файлов и создание папок


speedo
25-08-2015, 16:41
помогите пожалуйста

есть такой батник

for /f "UseBackQ delims=" %%a in ("sound .txt") do move /y "h:\FOTO\1\%%a" "h:\sections\sound \";
for /f "UseBackQ delims=" %%a in ("sound .txt") do move /y "h:\FOTO\2\%%a" "h:\sections\sound bad\"


Перемещает файлы по списку sound .txt из папок h:\FOTO\1 в h:\sections\sound \ и из h:\FOTO\2\ в h:\sections\sound bad\

как сделать чтобы была текстовая переменная вместо "sound" - чтобы менять имя только в 1ом месте , а не в 4ех ? ( имя файла . txt и названия папок одинаковы всегда , только во втором переносе в названии папки должно добавляться слово "Bad".


и как сделать чтобы автоматом создавались эти самые папки , куда будут переносится файлы h:\sections\sound \ и h:\sections\sound bad\ - в том случае если есть что перемещать в них .

спасибо

Elven
25-08-2015, 17:32
set fn=sound
if not exist "h:\sections\%fn% \" md "h:\sections\%fn% \"
if not exist "h:\sections\%fn% bad\" md "h:\sections\%fn% bad\"
for /f "UseBackQ delims=" %%a in ("%fn% .txt") do (
move /y "h:\FOTO\1\%%a" "h:\sections\%fn% \"
move /y "h:\FOTO\2\%%a" "h:\sections\%fn% bad\"
)

Прошу заметить, что в батнике есть несколько лишних, на мой взгляд, пробелов, оставлено как в исходном, ибо хз, м.б. так и надо

speedo
25-08-2015, 18:10
Elven, спасибо огромное

ps пробелы не нужные действительно есть

speedo
27-08-2015, 14:58
еще одна просьба

есть общий каталог с папками

foto1
foto1 bad
foto2
foto2 bad
...

внутри каждой папки лежат файлы с разными именами - имена во всех папках разные и не повторяются . : foto1.jpg foto2.jpg и тд

есть список этих папок spisok.txt
есть определенный список с названиями фоток ok.txt

нужно перенести из каждой папки (согласно spisok.txt) файлы по списку ok .txt в папки foto1 ok , foto1 bad ok , foto2 ok, foto2 bad ok и тд

speedo
27-08-2015, 15:54
и еще есть подкаталог с папками foto1 foto 2 и тд
есть список этих папок spisok1.txt
foto1
foto2

как переименовать эти папки согласно списку spisok2.txt
fotka1
fotka2



чтобы переименование папок было в соответствии с строками 2ух файлов

те : папка foto1 - первая строка списка spisok1.txt переименуется в папку fotka1 - согласно первой строке списка spisok2.txt
папка foto2 - вторая строка списка spisok1.txt переименуется в папку fotka2 - согласно второй строке списка spisok2.txt

Elven
27-08-2015, 16:05
нужно перенести из каждой папки (согласно spisok.txt) файлы по списку ok .txt в папки foto1 ok , foto1 bad ok , foto2 ok, foto2 bad ok и тд »
pushd "общий_каталог_с_папками"
for /f "delims=" %%d in (spisok.txt) do (
for /f "delims=" %%f in (ok.txt) do (
if not exist "%%d_ok" md "%%d_ok"
move "%%d\%%f" "%%d_ok\%%f"
)
)
popd
общий_каталог_с_папками заменить на путь до этого самого каталога.
приблизительно так, правда тут много допущений, например что в spisok.txt содержатся только имена папок, и что папки_ok должны создаваться в "общем каталоге с папками"

папка foto1 - первая строка списка spisok1.txt переименуется в папку fotka1 - согласно первой строке списка spisok2.txt
папка foto2 - вторая строка списка spisok1.txt переименуется в папку fotka2 - согласно второй строке списка spisok2.txt »
вот тут я что-то озадачен

speedo
27-08-2015, 18:21
работает.

один нюанс
можно ли чтобы при переносе файла в новую папку соответствующая строка из списка ok.txt удалялась? - тк список содержит 300 000 - очень долго все будет переносится

Elven
27-08-2015, 19:19
можно ли чтобы при переносе файла в новую папку соответствующая строка из списка ok.txt удалялась?»
Разве что писать в отдельный файл, а потом переименовывать, заменяя исходный.

speedo
27-08-2015, 19:25
а подробнее.

Elven
27-08-2015, 19:51
http://forum.oszone.net/thread-275284.html

speedo
01-09-2015, 12:18
Есть батник
set fn=sound
if not exist "h:\sections\%fn% \" md "h:\sections\%fn% \"
if not exist "h:\sections\%fn% bad\" md "h:\sections\%fn% bad\"
for /f "UseBackQ delims=" %%a in ("%fn% .txt") do (
move /y "h:\FOTO\1\%%a" "h:\sections\%fn% \"
move /y "h:\FOTO\2\%%a" "h:\sections\%fn% bad\"
)



нужно чтобы значения переменной брались из текстового файла

Elven
01-09-2015, 13:38
for /f "delims=" %%i in (имя_файла.txt) do (
set fn=%%i

if not exist "h:\sections\%fn% \" md "h:\sections\%fn% \"
if not exist "h:\sections\%fn% bad\" md "h:\sections\%fn% bad\"
for /f "UseBackQ delims=" %%a in ("%fn% .txt") do (
move /y "h:\FOTO\1\%%a" "h:\sections\%fn% \"
move /y "h:\FOTO\2\%%a" "h:\sections\%fn% bad\"
)
)

Пардон за лишнюю переменную, но после обеда так лень ее заменять по всему батнику...




© OSzone.net 2001-2012