Лучший отвечающий
Нужна помощь в написании bat

Вопрос
-
Нужно скачать 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:ENDPause
Получается нужно просто доработать этот скрипт. очень нужна помощь
- Перемещено Dmitriy VereshchakMicrosoft contingent staff, Moderator 2 декабря 2013 г. 6:11 Из Win7
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.csvPS. Если тема решена,пометьте ответ.
2 декабря 2013 г. 10:34Отвечающий