sys.xp_cmdshell dir可以只返回文件的日期吗?

时间:2015-11-24 14:41:25

标签: sql-server

我使用sys.xp_cmdshell dir <filename>来获取文件的最后修改日期。对于每个文件,它返回7行。其中7是日期和文件名字段。数据如下所示:

  

11/23/2015 12:14 PM 0新文本文件 - 复制(10) - Copy.txt

日期和文件名之间用17个空格分隔。有没有办法获得日期?我发现分裂是一项艰巨的任务,所以我认为更容易获得约会。

2 个答案:

答案 0 :(得分:1)

您可以将结果插入到可以解析日期的临时表中。

编辑:添加了防御性代码。

if object_id('tempdb.dbo.#files') is not null
    drop table #files;
begin
    create table #files
    (
        files varchar(200)
    )

    insert into #files
    exec sys.xp_cmdshell 'dir <filename>'

    select *,
        convert(date, substring(files, 1, PATINDEX('% %', files)))
    from #files
end

希望这有帮助!

答案 1 :(得分:1)

您可以像这样使用$newArray = array(); foreach ($tree as $parent) { if (is_object($parent)) { $newArray[] = $parent; } else if (is_array($parent)) { foreach ($parent as $child) { $newArray[] = $child; } } }

dir

它只会输出sys.xp_cmdshell for /f %a in ('dir /b <filename.ext>') do @echo %~ta 的日期。

如果您需要文件名和日期,请使用:<filename.ext>