来源数据可用
20161020162432intsol_wla_00000304.csv
$20161020162432intsol_wla_00000305.csv
& 20-30 个类似文件。
目的地应接收的数据应如下:
intsol_wla_20161020162432_00000304.csv
intsol_wla_$20161020162432_00000305.csv
以下是我正在尝试做的事情:
copy "d:\source\\ *int.csv" "d:\destination\\ *intsol_wla_%date:~-4,4%%date:~3,2%%date:~-10,2%.csv"
但这会返回:
20161020162432_intsol_wla_2016 111.csv
$20161020162432_intsol_wla_2016 111.csv
我该如何解决这个问题?
答案1
我假设您的意思是“复制并重命名.....从一个文件夹到另一个文件夹”,而不是“机器”。
如果是这种情况,这里有一些代码可以完成这项工作:(带有 $ 符号的文件会产生一些麻烦,因此我创建了两个“for”循环来处理这两种情况)
@echo off
SET source="d:\source\"
SET dest="d:\destination\"
for %%a in (%source%$??????????????intsol_wla_*.csv) do (
for %%F in (%%a) do (SET file=%%~nxF
copy %%a %dest%intsol_wla_%file:~0,15%_%file:~26,8%.csv
)
)
for %%b in (%source%??????????????intsol_wla_*.csv) do (
for %%F in (%%b) do (SET file2=%%~nxF
copy %%b %dest%intsol_wla_%file2:~0,14%_%file2:~25,8%.csv
)
)
答案2
我的第一个 for 列出了文件,第二个 for 获取名称并按字母 i 和下划线将它们拆分为四个标记。
NAME 20161020162432intsol_wla_00000304.csv
$20161020162432intsol_wla_00000305.csv
TOKEN ------1--------|--2--|-3-|------4-----
由于部分intsol_wla_
是常量,我们只需要 token1 和 4
@Echo off & SetLocal EnableExtensions
Set Src=Q:\Test\2016-11\11
Set Dst=Q:\Test\Dst
PushD "%Src%"||(Echo can't cd to %Src%&Pause&Exit /b 1)
For %%A in (*intsol_wla_*.csv
) Do For /F "tokens=1,4 delims=i_" %%B in ("%%A"
) Do Echo copy "%%~fA" "%Dst%\intsol_wla_%%B_%%C"
PopD
OutPut,要真正复制,删除复制前面的回显。
copy "Q:\Test\2016-11\11\$20161020162432intsol_wla_00000305.csv" "Q:\Test\Dst\intsol_wla_$20161020162432_00000305.csv"
copy "Q:\Test\2016-11\11\20161020162432intsol_wla_00000304.csv" "Q:\Test\Dst\intsol_wla_20161020162432_00000304.csv"