首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量重命名文件

批量重命名文件
EN

Stack Overflow用户
提问于 2013-12-03 19:19:37
回答 2查看 281关注 0票数 0

我在unix时间戳中有许多文件正在被移动到Windows文件服务器。

我们需要将这些文件批量重命名为可读的日期格式: YYYYMMDDHHMISS

我已经有了从unix时间戳到所需格式的转换函数。我的问题是,我必须找到一种方法来读取文件夹内容(xp_cmdshell),并将这些值传递给函数,然后用相应的格式重命名文件。1.我知道如何获得可读的格式2.我可以读取文件夹内容3.这些内容的组合和重命名为file是问题所在。

任何帮助都是非常感谢的

EN

回答 2

Stack Overflow用户

发布于 2013-12-03 20:50:46

您不能像您在评论中建议的那样,在Windows文件名中包含:。我建议使用这样的格式

2004-04-06_16-50-09.000

我知道你说你有时间戳转换的代码,但我已经写了一个方便的JScript/batch hybrid utility called getTimestamp.bat,它应该会让这项工作变得容易。

假设您的当前目录中有getTimestamp.bat,或者更好的是,在您的路径中的某个位置,那么以下批处理脚本应该可以完成此任务:

代码语言:javascript
复制
@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]*$"

票数 0
EN

Stack Overflow用户

发布于 2013-12-03 22:52:15

一旦你使用了xp_cmdshell,你就会有一个包含文件列表的单列表格(我假设你已经运行了一个dir命令来获取文件的名称)。

为表声明一个游标,对于每个记录,计算正确的名称并使用xp_cmdshell执行文件的重命名。

有关示例,请参阅here

不管怎么说,你可以这样做,但是sql server不是做大量文件重命名的地方(只是我的观点,任何其他答案对于这个任务来说都是更合适的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20349708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档