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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Перенос файлов и создание папок (http://forum.oszone.net/showthread.php?t=304468)

speedo 25-08-2015 16:41 2545886

Перенос файлов и создание папок
 
помогите пожалуйста

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

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 2545898

Код:

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 2545914

Elven, спасибо огромное

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

speedo 27-08-2015 14:58 2546566

еще одна просьба

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

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 2546588

и еще есть подкаталог с папками 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 2546591

Цитата:

Цитата speedo
нужно перенести из каждой папки (согласно 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 должны создаваться в "общем каталоге с папками"

Цитата:

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

вот тут я что-то озадачен

speedo 27-08-2015 18:21 2546646

работает.

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

Elven 27-08-2015 19:19 2546660

Цитата:

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

Разве что писать в отдельный файл, а потом переименовывать, заменяя исходный.

speedo 27-08-2015 19:25 2546661

а подробнее.

Elven 27-08-2015 19:51 2546665

http://forum.oszone.net/thread-275284.html

speedo 01-09-2015 12:18 2548199

Есть батник
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 2548241

Код:

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\"
)
)

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


Время: 02:03.

Время: 02:03.
© OSzone.net 2001-