CMD/BAT - [решено] Управление с папками

Ответить
Аватара пользователя
ajakzs

CMD/BAT - [решено] Управление с папками

Сообщение ajakzs »

Добрый вечер уважаемые знатоки скриптовых языков.

Прошу вашей помощи в написании скрипта, который выполняет следующие функции:

-имеется папка с подпапками и файл source.txt

необходимо содержимое каждой подпапки переместить в подпапку подпапки SOURCE(которую необходимо создать)

и из файла source.txt по случайной строчке поместить в каждую подпапку(рядом с SOURCE) с именем source.txt
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Управление с папками

Сообщение Georgio »

ajakzs, объясните всё, что Вы написали, оперируя полными именами упомянутых папок (и тогда слово "подпапка" употреблять не нужно), и приведите содержимое файла "source.txt" и его "местонахождение".
Аватара пользователя
ajakzs

Re: CMD/BAT - [решено] Управление с папками

Сообщение ajakzs »

И сходная папка: в ней папка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

Re: CMD/BAT - [решено] Управление с папками

Сообщение Georgio »

Код:

Код: Выделить всё

@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

Re: CMD/BAT - [решено] Управление с папками

Сообщение ajakzs »

СУУПер !

Спасибо Большое, а можно сделать, что из файла source.txt брались случайные строки?
Аватара пользователя
ajakzs

Re: CMD/BAT - [решено] Управление с папками

Сообщение ajakzs »

Цитата ajakzs:



а можно сделать, что из файла source.txt брались случайные строки?
CMD/BAT - [решено] Управление с папками








Код:

Код: Выделить всё

@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

Re: CMD/BAT - [решено] Управление с папками

Сообщение ajakzs »

Я конечно, совсем обнаглел, а можно добавить проверку на существование этой папки source и если она есть, то ничего не делать?
Аватара пользователя
ajakzs

Re: CMD/BAT - [решено] Управление с папками

Сообщение ajakzs »

Цитата ajakzs:



а можно добавить проверку на существование этой папки source и если она есть, то ничего не делать?
CMD/BAT - [решено] Управление с папками








Код:

Код: Выделить всё

@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
Ответить

Вернуться в «Скриптовые языки администрирования Windows»