Войти

Показать полную графическую версию : [решено] Управление с папками


ajakzs
28-10-2014, 22:06
Добрый вечер уважаемые знатоки скриптовых языков.
Прошу вашей помощи в написании скрипта, который выполняет следующие функции:
-имеется папка с подпапками и файл source.txt
необходимо содержимое каждой подпапки переместить в подпапку подпапки SOURCE(которую необходимо создать)
и из файла source.txt по случайной строчке поместить в каждую подпапку(рядом с SOURCE) с именем source.txt

Georgio
28-10-2014, 23:50
ajakzs, объясните всё, что Вы написали, оперируя полными именами упомянутых папок (и тогда слово "подпапка" употреблять не нужно), и приведите содержимое файла "source.txt" и его "местонахождение".

ajakzs
29-10-2014, 03:33
И сходная папка: в ней папка1, папка 2, папка3, source.txt
в каждой папке: файл1,файл2,файл3,файл4,файл5
source.txt : строка описания1, строка описания 2, строка описания 3

на выходе: в каждой из папок появляется папа source и все содержимое перемещается в эту папку
папка1/source/файл1,файл2,файл3,файл4,файл5 , рядом с папкой source новый файл, содержимое которого 1 строка из source.txt
папка2/source/файл1,файл2,файл3,файл4,файл5 , рядом с папкой source новый файл, содержимое которого 2 строка из source.txt
папка3/source/файл1,файл2,файл3,файл4,файл5 , рядом с папкой source новый файл, содержимое которого 3 строка из source.txt

Georgio
29-10-2014, 20:52
@echo off

chcp 1251>nul

set "dir=Исходная папка"
set "file=source.txt"

chcp 866>nul

pushd "%dir%"
for /f "delims=" %%i in ('"2>nul dir /ad/b"') do (
set /a count+=1
for /f "delims=" %%j in ('"2>nul dir /b "%%i""') do (
md "%%i\source" 2>nul
move "%%i\%%j" "%%i\source">nul 2>&1
)
for /f "tokens=1* delims=:" %%j in ('findstr /n "^" "%file%"') do (
for /f %%l in ('set /a count') do (
if %%j==%%l echo %%k>"%%i\%file%"
)
)
)
popd

exit /b

ajakzs
29-10-2014, 22:21
СУУПер !
Спасибо Большое, а можно сделать, что из файла source.txt брались случайные строки?

Georgio
30-10-2014, 00:33
а можно сделать, что из файла source.txt брались случайные строки? »


@echo off

chcp 1251>nul

:: Значением переменной "dir" может быть также и полное имя папки,
:: и буква диска с двоеточием (со слешем или без него).
set "dir=Исходная папка"

:: Значениями переменных "file" и "folder" полные имена быть не могут!
set "file=source.txt"
set "folder=source"

chcp 866>nul

pushd "%dir%"
for /f "usebackq delims=" %%i in ("%file%") do call set $%%random%%=%%i
for /f "delims=" %%i in ('"2>nul dir /ad/b"') do (
set /a count+=1
for /f "delims=" %%j in ('"2>nul dir /b "%%i""') do (
md "%%i\%folder%" 2>nul
move "%%i\%%j" "%%i\%folder%">nul 2>&1
)
for /f "tokens=1,2* delims=:=" %%j in ('set $^| findstr /n "^"') do (
for /f %%m in ('set /a count') do (
if %%j==%%m echo %%l>"%%i\%file%"
)
)
)
popd

exit /b

ajakzs
30-10-2014, 10:32
Я конечно, совсем обнаглел, а можно добавить проверку на существование этой папки source и если она есть, то ничего не делать?

Georgio
31-10-2014, 06:17
а можно добавить проверку на существование этой папки source и если она есть, то ничего не делать? »


@echo off

chcp 1251>nul

:: Значением переменной "dir" может быть также и полное имя папки,
:: и буква диска с двоеточием (со слешем или без него).
set "dir=Исходная папка"

:: Значениями переменных "file" и "folder" полные имена быть не могут!
set "file=source.txt"
set "folder=source"

chcp 866>nul

pushd "%dir%"
for /f "usebackq delims=" %%i in ("%file%") do call set $%%random%%=%%i
for /f "delims=" %%i in ('"2>nul dir /ad/b"') do (
set /a count+=1
rem Если папка "%folder%" существует, то ничего не происходит.
md "%%i\%folder%" 2>nul&& (
for /f "delims=" %%j in ('"2>nul dir /b "%%i""') do (
move "%%i\%%j" "%%i\%folder%">nul 2>&1
)
for /f "tokens=1,2* delims=:=" %%j in ('set $^| findstr /n "^"') do (
for /f %%m in ('set /a count') do (
if %%j==%%m echo %%l>"%%i\%file%"
)
)
)
)
popd

exit /b




© OSzone.net 2001-2012