下面的批处理代码从文件名中删除了字符“ x”,但也删除了扩展名“ .docx”中的“ x”。如何防止代码重命名扩展名?
for /f "delims=" %%a in ('dir /b /a-d *x*.docx') do (
set "fname=%%~a"
setlocal enabledelayedexpansion
set "nname=!fname:x=!"
ren "!fname!" "!nname!"
endlocal
)
答案 0 :(得分:0)
使用%%~na
和%%~xa
从扩展名中拆分名称,然后仅对名称进行替换,然后只需将新名称与扩展名连接即可。
您也不需要dir cmd。如果文件位于D:\test
的根目录中,请运行以下命令:
@echo off
setlocal enabledelayedexpansion
for %%a in ("D:\test\*x*.docx" ) do (
set "fname=%%~a"
set "xonly=%%~xa"
set "nonly=%%~dpna"
set "nonly=!nonly:x=!"
ren "!fname!" "!nonly!!xonly!"
)
如果文件位于D:\test
内的子目录中,则进行递归搜索:
@echo off
setlocal enabledelayedexpansion
for "D:\Test" /R %%a in (*x*.docx) do (
set "fname=%%~a"
set "xonly=%%~xa"
set "nonly=%%~dpna"
set "nonly=!nonly:x=!"
ren "!fname!" "!nonly!!xonly!"
)
请注意,%%~a
是驱动器和文件,因此请确保将!nonly!
设置为驱动器,路径和名称,即%%~dpna
有关变量替换的更多帮助,请打开cmd.exe
并运行for /?
答案 1 :(得分:-2)
df = pd.DataFrame({'user1':[2,4,21,21],'user2':[6,13,76,76],'param1':[0,2,0,1],'param2':['x','a','a','d'],'count':[1,3,2,1]}, columns=['user1','user2','param1','param2','count'])
df = df.set_index(['user1','user2','param1','param2'])
df = df.unstack([2,3]).sort_index(axis=1)
df2 = pd.DataFrame({'user1':[2,5,21],'user2':[6,18,76]})
df2.columns = pd.MultiIndex.from_product([df2.columns, [''],['']])
final_df = df2.merge(df, on=['user1','user2'], how='outer').fillna(0)
从与要重命名的文件相同的文件夹中执行CMD。