PDA

Показать полную графическую версию : bat дописывает в конец файла текст


rosalin
11-02-2015, 23:11
Ребята помогите решить такую задачу

нужно периодически дописывать в конец файлов ibases.v8i расположенные в разных каталогах фрагмент текста
[Информационная база]
Connect=File="C:\Documents and Settings\adm\Мои документы\InfoBase";
ID=2aa31bd2-a83f-4137-a75d-df3c94f53d7a
OrderInList=16640
Folder=/
OrderInTree=16640
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.2


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

@echo off
for /r "D:\Test" %%i in (*.txt) do (
(
for /f %%j in ('
find /c /v ""^<"%%i"
') do (
set m=%%j
)
)|| set m=0
(
for /f "delims=:" %%j in ('
findstr /n $ "%%i"
') do (
set n=%%j
)
)|| set n=0
for /f "tokens=1,2" %%j in ('
call echo %%m%% %%n%%
') do (
if %%k lss %%j (
echo.>>"%%i"
)
)
chcp 1251>nul
for /f "eol= delims=" %%j in ("строка текста") do (
chcp 866>nul
echo %%j>>"%%i"
)
)
exit /b

Iska
12-02-2015, 04:10
есть такой пакетник, »
Это не лучший способ.

хотелось бы что бы пути к файлам были уже прописаны в отдельном файле, а фрагмент текста еще в одном »
Покажите, что в Вашем примере есть фрагмент, и что — пути к файлам.

rosalin
12-02-2015, 14:08
Это не лучший способ. »

[Информационная база]
Connect=File="C:\Documents and Settings\adm\Мои документы\InfoBase";
ID=2aa31bd2-a83f-4137-a75d-df3c94f53d7a
OrderInList=16640
Folder=/
OrderInTree=16640
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.2

C:\Users\buh#1\AppData\Roaming\1C\1CEStart
C:\Users\buh#2\AppData\Roaming\1C\1CEStart
C:\Users\buh#3\AppData\Roaming\1C\1CEStart
C:\Users\ИвановИ\AppData\Roaming\1C\1CEStart

Iska
12-02-2015, 21:08
rosalin, примерно так:
Option Explicit

Const ForAppending = 8


Dim strPathsList

Dim objTS

Dim strPath
Dim strFile


If WScript.Arguments.Count = 1 Then
strPathsList = WScript.Arguments.Item(0)

With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(strPathsList) Then
Set objTS = .OpenTextFile(strPathsList)

Do Until objTS.AtEndOfStream
strPath = Trim(objTS.ReadLine())

If .FolderExists(strPath) Then
strFile = .BuildPath(strPath, "ibases.v8i")

With .OpenTextFile(strFile, ForAppending, True)
.WriteLine _
"[Информационная база]" & vbCrLf & _
"Connect=File=""C:\Documents and Settings\adm\Мои документы\InfoBase"";" & vbCrLf & _
"ID=2aa31bd2-a83f-4137-a75d-df3c94f53d7a" & vbCrLf & _
"OrderInList=16640" & vbCrLf & _
"Folder=/" & vbCrLf & _
"OrderInTree=16640" & vbCrLf & _
"External=0" & vbCrLf & _
"ClientConnectionSpeed=Normal" & vbCrLf & _
"App=Auto" & vbCrLf & _
"WA=1" & vbCrLf & _
"Version=8.2"

.Close
End With
Else
WScript.Echo "Can't find source folder [" & strPath & "]."
End If
Loop

objTS.Close

Set objTS = Nothing
Else
WScript.Echo "Can't find Paths list file [" & strPathsList & "]."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Paths list file>"
WScript.Quit 1
End If

WScript.Quit 0

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

Остался один вопрос: что именно во фрагменте является определяющим для него среди других? Это нужно для того, чтобы при повторном запуске фрагмент не добавлялся во второй раз в текстовый файл «ibases.v8i». Или при первом же запуске — не дублировал существующий, добавленный вручную.

rosalin
12-02-2015, 22:04
Остался один вопрос: что именно во фрагменте является определяющим для него среди других »
Фрагмент проверять на уникальность не надо, происходит так, создаю базу , она в свою очередь пишит фрагмент текста, а я уже раскидываю его по нужным мне профилям

PS Хотелось бы фрагмент вписывать куда нибудь в том виде котором он есть, а то в скрипт переносы еще надо дописывать, нельзя ли его в отдельный файл писать, а скрипт будет его оттуда брать?

Iska
12-02-2015, 22:09
Ну, не надо, так не надо. Пробуйте.

rosalin
13-02-2015, 19:05
Пробуйте. »
Супер!!!

А как сделать чтобы блок текста



вносить в отдельный файл в таком виде

[Информационная база]
Connect=File="C:\Documents and Settings\adm\Мои документы\InfoBase";
ID=2aa31bd2-a83f-4137-a75d-df3c94f53d7a
OrderInList=16640
Folder=/
OrderInTree=16640
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.2

каждый раз блок будет новый ((

Iska
13-02-2015, 19:32
rosalin, можно. Вопрос в том, как сделать сие удобнее.

Вы каким-либо файловым менеджером (Far Manager, Total Commander и т.п.) пользуетесь для работы или обходитесь одним Проводником?

rosalin
14-02-2015, 14:20
Вопрос в том, как сделать сие удобнее. »
Пользуюсь проводником (




© OSzone.net 2001-2012