CMD/BAT - _Построчная дописывание

Ответить
Аватара пользователя
lukas_endigo_91@vk

CMD/BAT - _Построчная дописывание

Сообщение lukas_endigo_91@vk »

Есть папки с именами пользователей, с помощью команды 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
Аватара пользователя
sov44

Re: CMD/BAT - _Построчная дописывание

Сообщение sov44 »

Для чего переписывать текстовый файл? Может сразу создавать нужный?



Код:

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

for /f "delims=" %%a in ('dir /b/ad "c:\Papka\*"') do echo mkdir c:\UserNew\%%~na >>new.txt
Аватара пользователя
Iska

Re: CMD/BAT - _Построчная дописывание

Сообщение Iska »

Цитата sov44:



Для чего переписывать текстовый файл? Может сразу создавать нужный?
CMD/BAT - _Построчная дописывание




Может сразу создавать папки Изображение?
Аватара пользователя
lukas_endigo_91@vk

Re: CMD/BAT - _Построчная дописывание

Сообщение lukas_endigo_91@vk »

О_о получилось спасибо 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

команда правильная?
Аватара пользователя
sov44

Re: CMD/BAT - _Построчная дописывание

Сообщение sov44 »

1. да.

2. да.

lukas_endigo_91@vk, что хочется получить в конечном результате? Новые папки с именами пользователей?
Аватара пользователя
lukas_endigo_91@vk

Re: CMD/BAT - _Построчная дописывание

Сообщение lukas_endigo_91@vk »

sov44 спасибо еще раз, получается следующее:

есть файловая хранилище со следующей директории \\s_storage\designers\2012year\ и там есть в соответствии с AD папки с именами пользователей. Количество пользователей около 70-80 у каждого из них имеется файлы которые они накопили за 2012 год, а папок как designers 14 каталогов. И что самое интересное надо в каждом каталоге создать (designers и.т.д.) папки с названием 2013year чтобы они уже новый файлы с 1 января закидывали на новый уже пустые папки. А затем файл new.txt переименовать в new.bat и запустить. Дело очень упрощается когда есть список Пользователей с 2012year в виде new.txt (new.bat) с именами и дописанной команды создание папки. Надеюсь я вам подробно объяснил суть проблемы.
Аватара пользователя
sov44

Re: CMD/BAT - _Построчная дописывание

Сообщение sov44 »

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
Аватара пользователя
gora

Re: CMD/BAT - _Построчная дописывание

Сообщение gora »

Цитата sov44:





Код:

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

md "%%~na"\"%%~nb"\2013year\"%%c" 2>nul

CMD/BAT - _Построчная дописывание




А так не проще?

Код:

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

md "%%~na\%%~nb\2013year\%%~c" 2>nul
Аватара пользователя
sov44

Re: CMD/BAT - _Построчная дописывание

Сообщение sov44 »

gora, Вы правы, поправил пост 7
Ответить

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