Показать полную графическую версию : [решено] Управление с папками
Добрый вечер уважаемые знатоки скриптовых языков.
Прошу вашей помощи в написании скрипта, который выполняет следующие функции:
-имеется папка с подпапками и файл source.txt
необходимо содержимое каждой подпапки переместить в подпапку подпапки SOURCE(которую необходимо создать)
и из файла source.txt по случайной строчке поместить в каждую подпапку(рядом с SOURCE) с именем source.txt
ajakzs, объясните всё, что Вы написали, оперируя полными именами упомянутых папок (и тогда слово "подпапка" употреблять не нужно), и приведите содержимое файла "source.txt" и его "местонахождение".
И сходная папка: в ней папка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
@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
СУУПер !
Спасибо Большое, а можно сделать, что из файла source.txt брались случайные строки?
а можно сделать, что из файла 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
Я конечно, совсем обнаглел, а можно добавить проверку на существование этой папки source и если она есть, то ничего не делать?
а можно добавить проверку на существование этой папки 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.