我在unix时间戳中有很多文件被移动到Windows文件服务器。
我们需要将批处理中的这些文件重命名为可读日期格式:YYYYMMDDHHMISS
我已经将unix时间戳的转换功能转换为所需的格式。 我的问题是我必须找到一种方法来读取文件夹内容(xp_cmdshell)并将这些值传递给函数,然后使用相应的格式重命名文件。 我知道如何获得可读格式 我可以阅读文件夹内容 3.这些与重命名为文件的组合是个问题。
非常感谢任何帮助
答案 0 :(得分:0)
您不能在评论中建议的Windows文件名中包含:
。我建议使用像2004-04-06_16-50-09.000
我知道你说你有时间戳转换的代码,但我写了一个方便的JScript/batch hybrid utility called getTimestamp.bat,可以让你的工作轻松。
假设您在当前目录中有getTimestamp.bat,或者更好,在路径中的某个位置,那么以下批处理脚本应该可以解决这个问题:
@echo off
setlocal enableDelayedExpansion
pushd "pathToYourFiles"
for /f "delims=" %%F in (
'dir /b /a-d *^|findstr "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$"'
) do (
call getTimestamp -d %%F000 -f {yyyy}-{mm}-{dd}_{hh}-{nn}-{ss}.{fff} -r name
ren "%%F" "!name!"
)
popd
如果新名称格式不符合您的喜好,请阅读getTimestamp.bat中内置的文档:它有足够的选项,您应该能够获得您想要的内容。
注意:强> 的
上述代码仅在所有文件名均来自2002年以后才有效。如果您的名字在2002年之前,那么我建议改为使用findstr "^[0-9]*$"
。
答案 1 :(得分:0)
一旦你使用了xp_cmdshell,你就会得到一个包含文件列表的列表(我假设你已经运行了dir
命令来获取文件的名称)。
声明表的游标,并为每个记录计算正确的名称,并使用xp_cmdshell执行文件的重命名。
有关示例,请参阅here。
无论如何,你可以这样做,但sql server不是大规模文件重命名的地方(只是我的意见,任何其他答案更适合任务)。