- Мой следующий windows -пакетный сценарий и сценарий powershell работают нормально, но мне нужна помощь, чтобы использовать только сценарий powershell вместо того, чтобы комбинировать windows batch и powershell
- как создать сценарий powershell с несколькими условиями, используемыми для l oop, скажем, я хочу, чтобы выходной файл bcp был разделен на "date", а также на "region"
windows пакетный скрипт:
ECHO OFF
REM PUT ALL VARIABLES START HERE, DATE FORMAT 'DD-MMM-YYYY'
SET LOCAL
SET BCP_EXPORT_TABLE=TABLE1
SET WORK_DIR=D:\SQL DB BACKUP\
SET SERVER_NAME=SERVER1
SET DATE_COLUMN=Date
REM ==========END OF VAR DECLARE===========
ECHO OFF
FOR /F %%d IN ('powershell -NoProfile -ExecutionPolicy Bypass -File daterangev2.ps1 %DATE_START% %DATE_STOP%') DO (
BCP "DECLARE @colnames VARCHAR(max);SELECT @colnames = COALESCE(@colnames + ';', '') + column_name from DB1.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='%BCP_EXPORT_TABLE%'; select @colnames;" queryout "%WORK_DIR%HeadersOnly.csv" -c -t";" r\n -T -S%SERVER_NAME%
BCP "SELECT g.* FROM dbo.[%BCP_EXPORT_TABLE%] g WHERE g.[%DATE_COLUMN%] >='%%d' AND g.[%DATE_COLUMN%] <= '%%d'" queryout "%WORK_DIR%1.CSV" -c -t";" -r\n -T -S%SERVER_NAME%
ECHO OFF
COPY /B "%WORK_DIR%HeadersOnly.csv"+"%WORK_DIR%1.CSV" "%WORK_DIR%__RESULT.CSV"
D:
CD "%WORK_DIR%"
DEL "%BCP_EXPORT_TABLE% (%DATE_START% to %DATE_STOP%)".CSV
REN __RESULT.CSV "%BCP_EXPORT_TABLE% (%%d)".CSV
DEL HeadersOnly.csv
DEL 1.CSV
)
CD C:
C:
CMD /K
ECHO ON
скрипт powershell:
param(
[datetime]$DateStart,
[datetime]$DateStop
)
$DateStart = Read-Host "Date start?"
$DateStop = Read-Host "Date stop?"
$startDate = get-date $DateStart
$stopDate = get-date $DateStop
for ( $i = $startDate; $i -lt $stopDate+1; $i=$i.AddDays(1) ) {
#$i.ToShortDateString()
[datetime]::parseexact($i.ToShortDateString(), 'dd-MMM-yy', $null).ToString('yyyyMMdd')
}