Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
2 / 2 / 1
Регистрация: 10.08.2015
Сообщений: 42

Переименовать файл по данным внутри него

19.10.2018, 14:19. Показов 2547. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите пожалуйста с написанием скрипта.

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

На данный момент процесс выглядит так:

Windows Batch file
1
2
3
4
5
6
7
8
9
::Рога и Копыта
for /F "delims=. tokens=1-3" %%a in ('echo %date:.=%') do rename *.txt "#r%%c%%b%%a.txt"
move /y "C:\файл\Рога и Копыта\*.txt" "\\192.168.1.1\Рога и Копыта\файл"
::Рога и Копыта 2
for /F "delims=. tokens=1-3" %%a in ('echo %date:.=%') do rename *.txt "#r%%c%%b%%a.txt"
move /y "C:\файл\Рога и Копыта2\*.txt" "\\192.168.1.1\Рога и Копыта2\файл"
::Рога и Копыта 3
for /F "delims=. tokens=1-3" %%a in ('echo %date:.=%') do rename *.txt "#r%%c%%b%%a.txt"
move /y "C:\файл\Рога и Копыта3\*.txt" "\\192.168.1.1\Рога и Копыта3\файл"
и тд

Данный bat стоит в планировщике задач и выполняется с интервалом в 10 мин.

Знаю, что возможно тут всё криво, но эта простая схема работала, до текущего момента.

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

Вот так выглядит нужный кусок:

ДатаНачала=19.10.2018
ДатаКонца=19.10.2018
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2018, 14:19
Ответы с готовыми решениями:

Создать файл чисел с данным именем и записать в него N первых положительных четных чисел
Дано имя файла и целое число N (>1). Создать файл чисел с данным именем и записать в него N первых положительных четных чисел (2, 4, ...). ...

Дано имя файла и вещественные числа A и D. Создать файл вещественных чисел с данным именем и записать в него 10 первых членов арифметической прогресси
Дано имя файла и вещественные числа A и D. Создать файл вещественных чисел с данным именем и записать в него 10 первых членов...

Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел
Дано имя файла и целое число N (> 1). Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел (2, 4,...

6
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
19.10.2018, 22:46
Лучший ответ Сообщение было отмечено YuS_2 как решение

Решение

содержимое "file.txt":
Кликните здесь для просмотра всего текста

Code
1
2
ДатаНачала=19.10.2018
ДатаКонца=19.10.2018

Windows Batch file
1
2
3
4
5
6
7
@echo off
set "f=file.txt"
set z=
 
<"%f%" (for /f "tokens=2 delims==" %%a in ('more') do @if not defined z set "z=%%a")
echo %z%
pause
1
2 / 2 / 1
Регистрация: 10.08.2015
Сообщений: 42
22.10.2018, 13:02  [ТС]
Цитата Сообщение от alpap Посмотреть сообщение
@echo off
set "f=file.txt"
set z=
<"%f%" (for /f "tokens=2 delims==" %%a in ('more') do @if not defined z set "z=%%a")
echo %z%
pause
Я конечно извиняюсь, но каким образом этот скрипт делает то что я написал? А именно:

Переименовывает все *.txt которые куда туда попадают из данных находящиеся в самом файле, формируя имя по маске #rДДММГГ (#r нужно для программы в которую позже будут загружать файлы) должно получится (#r221018).


Кусок данных привёл, именно по этой дате нужно формировать имя:
ДатаНачала=19.10.2018
ДатаКонца=19.10.2018

Прикрепил сам файл, что бы было видно что за данные в файле.
Вложение 974643


Далее раскиданы из своих локальных папок в папки на сетевой диск.

пр.

Windows Batch file
1
2
3
4
for /F "delims=. tokens=1-3" %%a in ('echo %date:.=%') do rename *.txt "#r%%c%%b%%a.txt"
move /y "C:\выгрузка\Рога и Копыта\*.txt" "\\192.168.1.1\выгрузка\Рога и Копыта\"
for /F "delims=. tokens=1-3" %%a in ('echo %date:.=%') do rename *.txt "#r%%c%%b%%a.txt"
move /y "C:\выгрузка\Рога и Копыта2\*.txt" "\\192.168.1.1\выгрузка\Рога и Копыта2\"
и тд.

Несколько файлов одним днём не выгружаются, так что файлов с одним именем быть не может.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
22.10.2018, 14:01
Цитата Сообщение от prostofirma Посмотреть сообщение
каким образом этот скрипт делает то что я написал?
поубавьте пыл это раз!
ссылка на файл не существует, а приведенный кусок мало о чем говорит, так как я не уверен что это начало файла, но другого не было. Поэтому я считал первую строку и взял первую увиденную мною дату. Далее, если эта дата то что нужно, то используйте ее там где нужно, команды на переименование у вас есть - в чем проблема?
0
2 / 2 / 1
Регистрация: 10.08.2015
Сообщений: 42
22.10.2018, 15:03  [ТС]
Цитата Сообщение от alpap Посмотреть сообщение
поубавьте пыл это раз!
Вырвали фразу из контекста) Извеняюсь если обидел, я в общем то без агрессии и злого умысла написал.

Прикрепил файл ещё раз.

#r221018.txt

Просто по скрипту много вопросов...Откуда он берёт дату? Как быть если исходное имя файлов и разные и тп см.выше.

Попробовал, не работает...

C:\test\5>set "f=test.txt"

C:\test\5>set z=

C:\test\5>(for /F "tokens=2 delims==" %a in ('more') do @if not defined z set "z=%a" ) 0<"test.txt"

C:\test\5>echo 1.01
1.01

C:\test\5>pause
Для продолжения нажмите любую клавишу . . .
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
22.10.2018, 15:32
Лучший ответ Сообщение было отмечено prostofirma как решение

Решение

теперь понятнее, вот нужные вам даты или предварительные будущие имена (пока они в echo для примера)
код должен быть в кодировке 1251, в штатном виндовом блокноте так и будет
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
>nul chcp 1251
set "d=C:\papka"
set "sp=ДатаНачала"
set "exp=txt"
set "t=#r"
 
setlocal enabledelayedexpansion
 pushd "%d%"
  for /f "delims=" %%a in ('dir /a-d/b "%t%*.%exp%"') do (
   <"%%a" (for /f "tokens=2-4 delims==." %%a in ('find "%sp%"') do @set "hh=%%c"& set "sdn=%t%%%a%%b!hh:~0,2!")
   echo !sdn!
  )
 popd
endlocal
pause& exit
Добавлено через 1 минуту
(и bat нет необходимости при этом коде держать в рабочей папке, может быть в другом удобном месте)

Добавлено через 3 минуты
вот к примеру строка 12 вместо указанной:
Windows Batch file
1
ren "%%a" "!sdn!.%exp%"
1
2 / 2 / 1
Регистрация: 10.08.2015
Сообщений: 42
23.10.2018, 11:27  [ТС]
alpap, Спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2018, 11:27
Помогаю со студенческими работами здесь

Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел
Дано имя файла и целое число N(&gt;1). создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел...

Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел
Дано имя файла и целое число N (&gt; 1). Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел (2, 4,...

Переименовать папку в имя файла внутри этой папки
Привет. Есть папка АБВ. Есть файл (внутри или где-то еще) 123. Подскажите пожалуйста, как переименовать папку в 123, особенно, если...

Как с jquery зацепиться к элементам внутри iframe и убить подключение к другому jquery внутри него?
$(document).ready(function() { $('#mainFrame').ready(function() { ...

Переименовать все файлы в заданном пользователем каталоге и во всех вложенных в него каталогах
Уважаемые господа программисты! Подскажите, как разрешить следующую проблему: переименовать все файлы в заданном пользователем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru