none
Нужна помощь в написании bat RRS feed

  • Вопрос

  • Нужно скачать 2 файла с ftp, названия такие 2013-11-30_1.csv и 2013-11-30_2.csv, т.е. постоянно меняются и маска фалов примерна такая вот ####-##-##_1.csv и ####-##-##_2.csv. Перекодировать файляы из utf8 в windows 1251.


    @echo off
    set FTPUserName=Логин пароль
    set FTPUserPassword=
    set FTPIPAddress=
    set LocalSourcePath=C:\1234
    set FTPDestinationPath=sensors
    set tempdate=%date%
    set FTPGetFile= 2013-11-30_1.csv 2013-11-30_2.csv 
    set FTPCmdFileName=.\FTPcommands.txt

    rem=====================================

    echo user %FTPUserName%>%FTPCmdFileName%
    echo lcd %LocalSourcePath%>>%FTPCmdFileName%
    echo cd %FTPDestinationPath%>>%FTPCmdFileName%
    echo %date%>>%FTPCmdFileName%
    echo mget %FTPGetFile%>>%FTPCmdFileName%
    echo quit >>%FTPCmdFileName%

    rem ======================== 

    ftp -v -n -d -s:%FTPCmdFileName% -i %FTPIPAddress%
    rem 1:END

    Pause

    Получается нужно просто доработать этот скрипт. очень нужна помощь

    30 ноября 2013 г. 14:43

Ответы

  • Для PowerShell:

    $w1251 = [System.Text.Encoding]::GetEncoding("windows-1251")
    Get-ChildItem *.csv | Foreach {
    	$content = get-content $_.FullName -Encoding utf8
    	[System.IO.File]::WriteAllLines($_.FullName, $content, $w1251)
    }



    • Изменено KazunEditor 2 декабря 2013 г. 9:23
    • Помечено в качестве ответа Ivaryus 2 декабря 2013 г. 11:01
    2 декабря 2013 г. 9:16
    Отвечающий

Все ответы

  • Добрый день!

    Переношу Ваш вопрос в раздел Windows Scripting.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    2 декабря 2013 г. 6:10
    Модератор
  • set FTPGetFile= 2013-11-30_1.csv 2013-11-30_2.csv

    попробовать:

    set FTPGetFile= *_1.csv *_2.csv

    Шаблон можно сделать более точным *-*-*_1.csv

    Для перекодирования файлов, воспользуйтесь - iconv(http://dbaportal.eu/2012/10/24/iconv-for-windows/)

    iconv -f utf-8 -t cp1250 utf-8.txt > cp1250.txt

    for /F %%i in ('dir C:\CSV\*.csv /a-d /b') do (
    	iconv -f utf-8 -t cp1250 %%i > "u%%i" 
    )

    • Предложено в качестве ответа ЖукMVP, Moderator 2 декабря 2013 г. 8:05
    2 декабря 2013 г. 7:56
    Отвечающий
  • Варианты интересные =)

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

    set FTPGetFile1=%date%_1.csv
    set FTPGetFile2=%date%_2.csv

    Для такого варианта нужно изменить формат даты времени и чисел через панель управления

    Вопрос как пользоваться - iconv ?

    2 декабря 2013 г. 8:49
  • Варианты интересные =)

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

    set FTPGetFile1=%date%_1.csv
    set FTPGetFile2=%date%_2.csv

    Для такого варианта нужно изменить формат даты времени и чисел через панель управления

    Вопрос как пользоваться - iconv ?

    Дата какая(текущая)?
    2 декабря 2013 г. 8:52
    Отвечающий
  • Да, текущая.


    В PowerShell  мне помогает такой вот скрипт, для перекодировки.

    Get-content *csv | Out-File -Encoding default data.txt

    Но  я так понял  он не конвертит в windows 1251   или я не правильно указываю.

    В gethelp не сказано что есть такой вариант перекодировки. 

    В обще перекодированные данные нужно залить в MS SQL 2008R2 ,  а пока что у меня заливаются кракозябры. =)


    • Изменено Ivaryus 2 декабря 2013 г. 9:04
    2 декабря 2013 г. 9:03
  • Для PowerShell:

    $w1251 = [System.Text.Encoding]::GetEncoding("windows-1251")
    Get-ChildItem *.csv | Foreach {
    	$content = get-content $_.FullName -Encoding utf8
    	[System.IO.File]::WriteAllLines($_.FullName, $content, $w1251)
    }



    • Изменено KazunEditor 2 декабря 2013 г. 9:23
    • Помечено в качестве ответа Ivaryus 2 декабря 2013 г. 11:01
    2 декабря 2013 г. 9:16
    Отвечающий
  • Добавил вот ещё что

    Get-content *csv | Out-File data.txt
    

    Для удобства закачки в MS SQL  код уже сам буду писать.

     

    Огромное спасибо !

    2 декабря 2013 г. 10:20
  • Добавил вот ещё что

    Get-content *csv | Out-File data.txt

    Для удобства закачки в MS SQL  код уже сам буду писать.

     

    Огромное спасибо !

    Для даты можно воспользоваться:

    set fdate=%date:~6,4%-%date:~3,2%-%date:~0,2%
    set FTPGetFile=%fdate%_1.csv %fdate%_2.csv

    PS. Если тема решена,пометьте ответ.

    2 декабря 2013 г. 10:34
    Отвечающий