我有以下文件夹结构:
C:\Database
C:\Database\Tables
C:\Database\Stored Procedures
C:\Database\Views
C:\Database\Functions在每个表、存储过程、Views和Functions文件夹中都会有大量文件,其格式如下:
在“表”文件夹下:
dbo.Table1Name.Table.sql
dbo.Table2Name.Table.sql
mon.Table3Name.Table.sql
test.Table4Name.Table.sql在存储过程文件夹下:
dbo.usp_StoredProcedure1Name.StoredProcedure.sql
dbo.usp_StoredProcedure2Name.StoredProcedure.sql
dbo.usp_StoredProcedure3Name.StoredProcedure.sql
mon.usp_StoredProcedure4Name.StoredProcedure.sql
mon.usp_StoredProcedure5Name.StoredProcedure.sql同样,对于视图、和函数,也是如此。
然后将表文件夹下的文件重命名为:
dbo.Table1Name.sql
dbo.Table2Name.sql
mon.Table3Name.sql
test.Table4Name.sql然后,存储过程文件夹下的文件名为:
dbo.usp_StoredProcedure1Name.sql
dbo.usp_StoredProcedure2Name.sql
dbo.usp_StoredProcedure3Name.sql
mon.usp_StoredProcedure4Name.sql
mon.usp_StoredProcedure5Name.sql理想情况下,我应该在数据库文件夹中有一个批处理文件,重新命名从各自文件夹中的文件名中删除Table、 View和Functional的文件。
如果在批处理文件中很难做到这一点,我会尝试在PowerShell中找到一些东西。
感谢亚历克斯K编辑我的原始帖子(我的第一篇文章)和感谢福克斯里夫您的推荐和KnightWhoSayNi分享您的方式。
发布于 2014-07-04 13:54:20
启动这个,它就会在屏幕上显示display the ren commands。
如果是正确的,那么删除echo并再次运行它来执行重命名。
@echo off
for /f "delims=" %%a in ('dir "C:\Database\*.sql" /b /s /a-d ') do (
for /f "tokens=1,2 delims=." %%b in ("%%~nxa") do echo ren "%%a" "%%b.%%c%%~xa"
)
pause发布于 2014-07-04 11:14:58
更新之前的
我写了小批脚本。
例如。
asd.first.second.txt -> asd.first.txt
aaa.first.second.txt -> aaa.first.txt
bbb.first.second.txt -> bbb.first.txt
ccc.first.second.txt -> ccc.first.txt
ddd.first.second.txt -> ddd.first.txt要点:在文件夹中创建批处理脚本和文件
ECHO OFF
SETLOCAL EnableDelayedExpansion
CLS
SET temp_file=C:\temp\temp_string.txt
FOR /f "delims=" %%A IN ('DIR /B "%~dp0"') DO (
ECHO %%A
ECHO %%A > %temp_file%
FOR /F "tokens=1,2,3 delims=." %%I IN (%temp_file%) DO (
ECHO %%I %%J %%K
rename %%I.%%J.%%K.txt %%I.%%J.txt
)
)
DEL %temp_file%发布于 2014-07-04 15:24:25
不需要批处理脚本。它可以通过命令行上的一个简单的REN命令来完成!:-)
for %F in (Tables "Stored Procedures" Views Functions) do @ren "C:\Database\%~F\*.*.*.sql" "????????????.??????????????????????????????.sql"只需确保至少有与最长源文件名中的字符相同的?。
如果在批处理脚本中使用该命令,则加倍。
下面是使用两个REN命令的另一个简单解决方案(批处理脚本):
@echo off
for %%F in (
Tables:Table
"Stored Procedures:StoredProcedure"
Views:View
Functions:Function
) do for /f "tokens=1,2 delims=:" %%A in ("%%~F") do (
ren "C:\Database\%A\*.*.*.sql" *.
ren "C:\Database\%A\*.*.%%B" *.sql
)有关理解上述解决方案为什么工作的帮助,请参见How does the Windows RENAME command interpret wildcards?。
https://stackoverflow.com/questions/24571030
复制相似问题