raccoozie提供的此脚本的工作原理如下:
internal void Initialize(OptionsModel model)
{
this.model = model;
model.PropertyChanged += ModelPropertyChanged;
// Initialize properties with data from the model
}
private void ModelPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(OptionsModel.FontSize))
{
// Update properties with data from the model
}
}
现在我想添加一个条件,只选择过去7天创建的文件。
问题是该程序不会每天创建1个文件,但可能会在特定日期创建7,5,9或0个文件。
如何开始?
答案 0 :(得分:1)
合并 7 上次创建的 .csv :
@echo off
setlocal enabledelayedexpansion
set /a $c=1
set "fileName=combinedFiles.csv"
>"%filename%" (for /f "delims=" %%F in ('dir/b/a-d/od *.csv') do (
if not "%%F"=="%fileName%" if !$c! LEQ 7 (
type "%%F"
set /a $c+=1)
))
编辑:合并过去7天内创建的所有 .csv 文件并按日期排序
@Echo off
::Get current Date -7 days with VBS
echo wscript.echo DateAdd("d", -7, date(^)^) >GetDate.vbs
for /f "delims=" %%a in ('cscript //nologo GetDate.vbs') do set "$Limit=%%a"
for /f "tokens=1-3 delims=/" %%a in ('echo %$Limit%') do set /a $Limit=%%c%%b%%a
Del GetDate.vbs 2>nul
setlocal enabledelayedexpansion
set "fileName=combinedFiles.csv"
(for /f "delims=" %%a in ('dir/b/a-d/o-d "*.csv"') do (
for /f "tokens=1-3* delims=/ " %%b in ('dir /TC "%%a" ^| find "/"') do set "$DateTest=%%d%%c%%b"
if not "%%F"=="%fileName%" if !$DateTest! GEQ %$Limit% type "%%a"
)
)>%fileName%"
日期转换为201/022011到20160211,具有逻辑测试值
(以后的日期总会更长)。因此,我们可以测试所有排序(dir /o-d
)个文件,其值大于$Limit
。
现在我们按日期排序的文件不超过7天。
答案 1 :(得分:0)
SET "filename1=alreadydone.txt"
IF NOT EXIST "%filename1%" ECHO x:>>"%filename1%"
FOR /f "delims=" %%a IN (
'dir /b /a-d /o:d "*.csv" ^|findstr /x /v /g:"%filename1%'
) DO (
rem do your combine-file [%%a] here
ECHO %%a>>"%filename1%"
)
此部分例程(生成%%a
而不是%%F
,因为这是我的模板所做的)获取目录列表并排除filename1
中的文件。其余文件将传递到您已生成的代码的combine-file部分,文件名将记录在filename1
中。
if not exist
行在filename1
中生成虚拟条目,以便findstr
不会抱怨文件为空。
使用此方案,一旦处理完任何文件,其名称将保存在filename1
中,并且不会被重新处理。只使用您的组合代码组合新文件。
结果:没有关于“7”或任何其他天数的锚。如果你分开运行7天,那7天的处理将被合并并记录下来。如果你因为预期公共假期而分开5天,那么将结合这5天。如果你去度假2周,那么由于没有人会按照你的指示去运行它,它将结合过去的14天。或者你可以每天运行它......
所以这是合并批次
@echo off
setlocal
set first=1
set fileName="combinedFiles.csv"
SET "filename1=alreadydone.txt"
IF NOT EXIST "%filename1%" ECHO x:>>"%filename1%"
>%fileName% (
for /f %%F in ('dir /b /a-d /o:d "*.csv" ^|findstr /x /v /g:"%filename1%"'
) do (
ECHO %%F>>"%filename1%"
if not "%%F"==%fileName% (
if defined first (
type "%%F"
set "first="
) else more +1 "%%F"
)
)
)
[编辑:]删除sourcedir
中的for/f
,因为不需要目录规范(文件在当前目录中)
[进一步修改:]在/f
中重新添加for
并添加缺失的闭兔耳。