Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - _Построчная дописывание

Ответить
Настройки темы
CMD/BAT - _Построчная дописывание

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: lukas_endigo_91@vk
Дата: 18-06-2014
Описание: решено
Есть папки с именами пользователей, с помощью команды 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

Отправлено: 13:05, 26-12-2012

 

Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


Для чего переписывать текстовый файл? Может сразу создавать нужный?
Код: Выделить весь код
for /f "delims=" %%a in ('dir /b/ad "c:\Papka\*"') do echo mkdir c:\UserNew\%%~na >>new.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:43, 26-12-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата sov44:
Для чего переписывать текстовый файл? Может сразу создавать нужный? »
Может сразу создавать папки ?
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:09, 26-12-2012 | #3


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


О_о получилось спасибо 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
команда правильная?

Отправлено: 15:01, 26-12-2012 | #4


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:00, 26-12-2012 | #5


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


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

Отправлено: 20:17, 26-12-2012 | #6


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось sov44, 26-12-2012 в 23:51.


Отправлено: 23:11, 26-12-2012 | #7


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата sov44:
Код: Выделить весь код
md "%%~na"\"%%~nb"\2013year\"%%c" 2>nul
»
А так не проще?
Код: Выделить весь код
md "%%~na\%%~nb\2013year\%%~c" 2>nul
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:21, 26-12-2012 | #8


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


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

Отправлено: 23:33, 26-12-2012 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - _Построчная дописывание

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Дописывание CD-RW дисков Murder7 Хочу все знать 14 25-05-2005 20:56




 
Переход