Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   bat дописывает в конец файла текст (http://forum.oszone.net/showthread.php?t=295395)

rosalin 11-02-2015 23:11 2470105

bat дописывает в конец файла текст
 
Ребята помогите решить такую задачу

нужно периодически дописывать в конец файлов 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 2470158

Цитата:

Цитата rosalin
есть такой пакетник, »

Это не лучший способ.

Цитата:

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

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

rosalin 12-02-2015 14:08 2470351

Цитата:

Цитата Iska
Это не лучший способ. »

Фрагмент для вставки
[Информационная база]
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


Пути к файлу ibases.v8i
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 2470572

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 2470618

Цитата:

Цитата Iska
Остался один вопрос: что именно во фрагменте является определяющим для него среди других »

Фрагмент проверять на уникальность не надо, происходит так, создаю базу , она в свою очередь пишит фрагмент текста, а я уже раскидываю его по нужным мне профилям

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

Iska 12-02-2015 22:09 2470620

Ну, не надо, так не надо. Пробуйте.

rosalin 13-02-2015 19:05 2470989

Цитата:

Цитата Iska
Пробуйте. »

Супер!!!

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



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

[Информационная база]
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 2471003

rosalin, можно. Вопрос в том, как сделать сие удобнее.

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

rosalin 14-02-2015 14:20 2471232

Цитата:

Цитата Iska
Вопрос в том, как сделать сие удобнее. »

Пользуюсь проводником (


Время: 21:16.

Время: 21:16.
© OSzone.net 2001-