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

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

Ответить
Настройки темы
CMD/BAT - [решено] Как добавить в текстовый файл строку с именем самого файла

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


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

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


Подскажите пожалуйста, как добавить в текстовый файл строку с именем самого файла.
есть командный файл :
читать дальше »
@echo off

set dir1=Q:
set dir2=C:\SCAN
set dir3=C:\SCAN\BACK
set log_copy=C:\SCAN\BACK\lcopy.log
set log_move=C:\SCAN\BACK\lmove.log

if exist %dir1% (goto 1) else (goto 2)

:1
echo "-=-=-=- start TRANSFER -=-=-=-=-" >> %log_copy%
date /t >> %log_copy%
time /t >> %log_copy%
copy %dir2%\*.txt %dir1% >> %log_copy%
echo "-=-=-=- finish TRANSFER -=-=-=-=-" >> %log_copy%

echo "-=-=-=- start MOVE BACK -=-=-=-=-" >> %log_move%
date /t >> %log_move%
time /t >> %log_move%
move %dir2%\*.txt %dir3% >> %log_move%
echo "-=-=-=- finish MOVE BACK -=-=-=-=-" >> %log_move%

@echo ----------------------
@echo TRANSFER CONPLITE
@echo ----------------------
goto end

:2
@echo ----------------------
@echo ERROR NO DISK Q:
@echo CONNECT DISK Q:
@echo TRANSFER NO CONPLITE
@echo ----------------------
pause
goto end

:end


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

Отправлено: 11:04, 02-07-2014

 

Ветеран


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

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


Как-то так:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFolder1=Q:\
set sFolder2=C:\SCAN
set sFolder3=C:\SCAN\BACK
set log_copy=C:\SCAN\BACK\lcopy.log
set log_move=C:\SCAN\BACK\lmove.log

if exist "%sFolder1%\." (
	>>"%log_copy%" (
		echo -=-=-=- start TRANSFER -=-=-=-=- 
		echo %date% %time% 
		echo %log_copy%
		
		copy /y "%sFolder2%\*.txt" "%sFolder1%\"
		
		echo -=-=-=- finish TRANSFER -=-=-=-=-
	)
	
	>>"%log_move%" (
		echo -=-=-=- start MOVE BACK -=-=-=-=-
		echo %date% %time% 
		echo %log_move%
		
		move "%dir2%\*.txt" "%sFolder3%\"
		
		echo -=-=-=- finish MOVE BACK -=-=-=-=-
	)
	
	echo ----------------------
	echo TRANSFER CONPLITE
	echo ----------------------
) else (
	echo ----------------------
	echo ERROR NO DISK Q:
	echo CONNECT DISK Q:
	echo TRANSFER NO CONPLITE
	echo ----------------------
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:26, 02-07-2014 | #2



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

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


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


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

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



немножко не то....
есть папка C:\SCAN - в которой текстовый файл (ы) типа DB100073801.07.201416-52-35-Doc1.txt падают с терминала сбора данных
дальше запускается скрипт
читать дальше »
@echo off

set dir1=Q:
set dir2=C:\SCAN
set dir3=C:\SCAN\BACK
set log_copy=C:\SCAN\BACK\lcopy.log
set log_move=C:\SCAN\BACK\lmove.log

if exist %dir1% (goto 1) else (goto 2)

:1
echo "-=-=-=- start TRANSFER -=-=-=-=-" >> %log_copy%
date /t >> %log_copy%
time /t >> %log_copy%
copy %dir2%\*.txt %dir1% >> %log_copy%
echo "-=-=-=- finish TRANSFER -=-=-=-=-" >> %log_copy%

echo "-=-=-=- start MOVE BACK -=-=-=-=-" >> %log_move%
date /t >> %log_move%
time /t >> %log_move%
move %dir2%\*.txt %dir3% >> %log_move%
echo "-=-=-=- finish MOVE BACK -=-=-=-=-" >> %log_move%

@echo ----------------------
@echo TRANSFER CONPLITE
@echo ----------------------
goto end

:2
@echo ----------------------
@echo ERROR NO DISK Q:
@echo CONNECT DISK Q:
@echo TRANSFER NO CONPLITE
@echo ----------------------
pause
goto end

:end
который проверяет наличие директории " Q:"(сетевой диск) и копирует туда данный файл(ы)...(иначе - выдает ошибку)... и следом перемещает файлик(и) в "C:\SCAN\BACK" - (резервная копия) и пишет параллельно логи lcopy.log и lmove.log...
А как сделать чтобы в файл типа "DB100073801.07.201416-52-35-Doc1.txt", который копируется в "Q:\" добавились строка с его же именем "DB100073801.07.201416-52-35-Doc1" типа стало
читать дальше »

DB100073801.07.201416-52-35-Doc1
1. Отгрузка 4242002436647 00243664194052 0017759#0001006160#11#20140701
1. Отгрузка 4242002436647 24366419405200 0017759#0001006160#11#20140701
1. Отгрузка 4242002436647 00243664194052 0017759#0001006160#11#20140701
1. Отгрузка 4242002436647 00243664194052 0017759#0001006160#11#20140701
1. Отгрузка 4242002436647 64194052009876 0017759#0001006160#11#20140701
1. Отгрузка 4242002436647 64194052009425 0017759#0001006160#11#20140701
1. Отгрузка 3838942536403 24985234730024 0017759#0001006160#11#20140701
1. Отгрузка 3838942536403 24985234730003 0017759#0001006160#11#20140701
1. Отгрузка 4242002436647 64194052009098 0017758#0001006160#11#20140701
1. Отгрузка 4242002436647 00243664194052 0017758#0001006160#11#20140701

Отправлено: 12:16, 02-07-2014 | #3


Ветеран


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

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


Цитата bodun123:
А как сделать чтобы в файл типа "DB100073801.07.201416-52-35-Doc1.txt", который копируется в "Q:\" добавились строка с его же именем »
Пробуйте:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFolder1=Q:\
set sFolder2=C:\SCAN
set sFolder3=C:\SCAN\BACK
set log_copy=C:\SCAN\BACK\lcopy.log
set log_move=C:\SCAN\BACK\lmove.log

call :GetTemporaryName

if exist "%sFolder1%\." (
	>>"%log_copy%" (
		echo -=-=-=- start TRANSFER -=-=-=-=- 
		echo %date% %time% 
		
		for %%i in ("%sFolder2%\*.txt") do (
			>"%TemporaryName%" echo %%~nxi
			>nul copy /y "%TemporaryName%"+"%%~i" "%sFolder1%\%%~nxi"
			echo %%~nxi
		)
		echo -=-=-=- finish TRANSFER -=-=-=-=-
	)
	
	>>"%log_move%" (
		echo -=-=-=- start MOVE BACK -=-=-=-=-
		echo %date% %time% 
		
		for %%i in ("%sFolder2%\*.txt") do (
			>"%TemporaryName%" echo %%~nxi
			>nul copy /y "%TemporaryName%"+"%%~i" "%sFolder3%\%%~nxi"
			del /f /q "%%~i"
			echo %%~nxi
		)
		
		echo -=-=-=- finish MOVE BACK -=-=-=-=-
	)
	
	del /f /q "%TemporaryName%"
	
	echo ----------------------
	echo TRANSFER CONPLITE
	echo ----------------------
) else (
	echo ----------------------
	echo ERROR NO DISK Q:
	echo CONNECT DISK Q:
	echo TRANSFER NO CONPLITE
	echo ----------------------
)

endlocal
exit /b 0

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
	setlocal enableextensions enabledelayedexpansion

:NextName
	set sTempName=%temp%\temp%random%.tmp

	if exist "%sTempName%" goto :NextName

	set sProcName=%~0

	endlocal & set %sProcName:~4%=%sTempName%
	exit /b 0
rem ==========================================================================

Последний раз редактировалось Iska, 02-07-2014 в 14:47. Причина: Убран вопрос, добавлен код.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:33, 02-07-2014 | #4


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


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

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


Спасибо большое!
Все получилось, уже в работе.
p.s.
добавил ещё паузу чтоб не закрывалась окно консоли при ошибке - отсутствия диска Q
p.p.s.
в конец файла ещё добавляется артефакт "" , мне не мешает.

Последний раз редактировалось bodun123, 02-07-2014 в 16:04.


Отправлено: 15:28, 02-07-2014 | #5


Ветеран


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

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


Цитата bodun123:
в конец файла ещё добавляется артефакт "" , мне не мешает. »
Простите, что добавляется? И в конец какого файла?

Отправлено: 08:05, 03-07-2014 | #6


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


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

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


добавляется символ " " -тут не отображается, по каталогу это Управляющие символы
U+001A 
ещё просьба, можно ли в этом скрипте реализовать - обрезку окончания в добавляющейся строке типа "DB100073801.07.201416-52-35-Doc1.txt" чтоб не было "-Doc1.txt" а осталось только "DB100073801.07.201416-52-35"?
что-то там у 1С-ков не проходит... это окончание.

Отправлено: 11:50, 03-07-2014 | #7


Ветеран


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

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


Цитата bodun123:
добавляется символ " " -тут не отображается, по каталогу это Управляющие символы
U+001A  »
Это обычный ASCII-символ «конец файла». Попробуйте добавить в обе команды «copy» параметр «/b» в виде:
Код: Выделить весь код
>nul copy /b /y "%TemporaryName%"+"%%~i" …
Цитата bodun123:
ещё просьба, можно ли в этом скрипте реализовать - обрезку окончания в добавляющейся строке типа "DB100073801.07.201416-52-35-Doc1.txt" чтоб не было "-Doc1.txt" а осталось только "DB100073801.07.201416-52-35"?
что-то там у 1С-ков не проходит... это окончание. »
Можно. По каким признакам нужно определять это окончание?

Отправлено: 16:05, 03-07-2014 | #8


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


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

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


Цитата Iska:
Можно. По каким признакам нужно определять это окончание? »
просто "-Doc1.txt" - чтоб не было в тексте файла, это константа, или по количеству символов "DB100073801.07.201416-52-35" - 27 - остальные отбросить

Отправлено: 16:31, 03-07-2014 | #9


Ветеран


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

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


Цитата bodun123:
это константа »
То есть, там всегда будет «-Doc1», только «-Doc1» и ничего, окромя «-Doc1». Так?

Отправлено: 16:38, 03-07-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? Dark Ange1 Скриптовые языки администрирования Windows 28 22-06-2022 14:37
CMD/BAT - [решено] Как построчно разбить текстовый файл на текстовые файлы содержащие одну строку binwatch@vk Скриптовые языки администрирования Windows 3 09-09-2012 19:59
VBS/WSH/JS - Добавить в первую строку текстового файла его имя и дату SergeyVD Скриптовые языки администрирования Windows 6 06-07-2011 20:06
CMD/BAT - [решено] как из bat файла дописать символ в текстовый файл? idzs Скриптовые языки администрирования Windows 6 22-02-2011 03:49
добавить запись в текстовый файл не открывая его. GooDok AutoIt 3 19-10-2010 16:42




 
Переход