Показать полную графическую версию : _Построчная дописывание
lukas_endigo_91@vk
26-12-2012, 13:05
Есть папки с именами пользователей, с помощью команды DIR я получаю этот в виде текстового документа. Вот мы имеем текстовый файл с именами, и вот теперь проблема...
содержание файла User.txt:
Basov_D
Kim_E
Stasova_L
как сделать так чтобы команда перебрал этот файл и изменила её на
mkdir c:\UserNew\Basov_D
mkdir c:\UserNew\Kim_E
mkdir c:\UserNew\Stasova_L
то есть дописал перед каждым именем слова "mkdir c:\UserNew\"
Решение
@echo off
Setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /b/a:d "*"') do (
for /f "delims=" %%b in ('dir /b/a:d "%%a"') do (
md "%%a\%%b\2013year" 2>nul
for /f "delims=" %%c in ('dir /b/a:d "%%a\%%b\2012year" 2^>nul') do (
md "%%a\%%b\2013year\%%c" 2>nul
)
)
)
exit /b
Для чего переписывать текстовый файл? Может сразу создавать нужный?
for /f "delims=" %%a in ('dir /b/ad "c:\Papka\*"') do echo mkdir c:\UserNew\%%~na >>new.txt
Для чего переписывать текстовый файл? Может сразу создавать нужный? »
Может сразу создавать папки ;)?
lukas_endigo_91@vk
26-12-2012, 15:01
О_о получилось спасибо sov44, не судите меня строго. просто для меня команда for очень далекая, возникли еще 2 вопроса
1. если я правильно понимаю все данные от команды dir он задает в ("%%a" или "%%~na") и затем по одной строке записывает в "new.txt" с добавление "mkdir c:\UserNew\"
2. правильная ли команда будет for /f "delims=" %%a in ('dir /b/ad "c:\Papka\*"') do echo mkdir c:\UserNew\%%~na_NewFolder>>new.txt? то есть в содержании файла new.txt:
mkdir c:\UserNew\Basov_D_NewFolder
mkdir c:\UserNew\Kim_E_NewFolder
mkdir c:\UserNew\Stasova_L_NewFolder
команда правильная?
1. да.
2. да.
lukas_endigo_91@vk, что хочется получить в конечном результате? Новые папки с именами пользователей?
lukas_endigo_91@vk
26-12-2012, 20:17
sov44 спасибо еще раз, получается следующее:
есть файловая хранилище со следующей директории \\s_storage\designers\2012year\ и там есть в соответствии с AD папки с именами пользователей. Количество пользователей около 70-80 у каждого из них имеется файлы которые они накопили за 2012 год, а папок как designers 14 каталогов. И что самое интересное надо в каждом каталоге создать (designers и.т.д.) папки с названием 2013year чтобы они уже новый файлы с 1 января закидывали на новый уже пустые папки. А затем файл new.txt переименовать в new.bat и запустить. Дело очень упрощается когда есть список Пользователей с 2012year в виде new.txt (new.bat) с именами и дописанной команды создание папки. Надеюсь я вам подробно объяснил суть проблемы.
lukas_endigo_91@vk, насколько понял, нужно в каталоге designers и в каждом каталоге рядом создать папку 2013year рядом с папкой 2012year. Папки 2013year наполнить папками с именами пользователей, которые взять из папки 2012year ?
тогда примерно так:
@echo off
Setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /b/a:d "*"') do (
for /f "delims=" %%b in ('dir /b/a:d "%%a"') do (
md "%%a\%%b\2013year" 2>nul
for /f "delims=" %%c in ('dir /b/a:d "%%a\%%b\2012year" 2^>nul') do (
md "%%a\%%b\2013year\%%c" 2>nul
)
)
)
exit /b
скрипт должен находиться рядом с s_storage
md "%%~na"\"%%~nb"\2013year\"%%c" 2>nul »
А так не проще?md "%%~na\%%~nb\2013year\%%~c" 2>nul
gora, Вы правы, поправил пост 7
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC