
[部分解決]使用拖放文件到批處理上執(zhí)行的方式對文件名帶特殊字符文件如何獲取完整路徑最后由 to
nyabbs 于 -11-6 11:21需要拖放到批處理的文件,根據(jù)其文件名 、創(chuàng)建時間、當時時間,進行更名。批處理不能運行,但將批處理中的語句行復(fù)制到CMD是可以運行的。請教各位!(學(xué)習(xí)了論壇跟文件名字符串處理相關(guān)的若干文章,沒有找出這段代碼的問題)比如文件名為“基于(山水為體,文化為魂)理念的旅游產(chǎn)業(yè)開發(fā)研究.txt” 想要修改為 4R161105_基于(山水為體,文化為魂)理念的旅游產(chǎn)業(yè)開發(fā)研究_TonyQ_1942.txt(其中,161105是今天的日期,1942是當前的時間)把“基于(山水為體,文化為魂)理念的旅游產(chǎn)業(yè)開發(fā)研究.txt“拖到這個BAT上,屏幕顯示如下:file_suffix = _TonyQ_2051請按任意鍵繼續(xù). . .file_name= 基于(山水為體 file_prename=基于(山水為體file_extname=基于(山水為體中的空格已經(jīng)改為_ ,文件 全 名 改為基于(山水為體基于(山水為體中的空格已經(jīng)改為_ ,文件名 改為基于(山水為體基于(山水為體中的括號已經(jīng)改為( ,文件 全 名 改為基于(山水為體括號已經(jīng)改為( ,文件名 改為基于(山水為體基于(山水為體中的括號已經(jīng)改為) ,文件 全 名 改為基于(山水為體括號已經(jīng)改為) ,文件名 改為基于(山水為體基于(山水為體中的加號已經(jīng)改為: ,文件 全 名 改為基于(山水為體加號已經(jīng)改為: ,文件名 改為基于(山水為體請按任意鍵繼續(xù). . .沒有達到預(yù)期的想要更名為4R161105_基于(山水為體,文化為魂)理念的旅游產(chǎn)業(yè)開發(fā)研究_TonyQ_1942.txt(其中,161105是今天的日期,1942是當前的時間)的效果出現(xiàn)的問題:1、file_name并沒有取得文件的全名;2、更不要提后面的ren命令能運行了另外我想請教下 for /f tokens=* %%I in (%1) do (和for /f delims= %%I in (%~1) do ( 這兩種寫法有啥不同?我的本意是取得拖放到BAT的文件名變量
- @echo off&setlocal enabledelayedexpansion
- :ADDREM
- IF %1.==. GOTO END
- set thefile=%1
- set/a g=%time:~0,2%,h=g+100
- set file_suffix=_TonyQ_%h:~-2%%time:~3,2%
- echo file_suffix = %file_suffix%
- for /f delims= %%I in (%~1) do (
- set file_name=%%~nxI&set file_prename=%%~nI&set file_extname=%%~xI
- echo file_name= !file_name!&echofile_prename=!file_prename!&echo file_extname=!file_extname!
- set file_name0=!file_name: =_!&echo !file_name!中的空格已經(jīng)改為_ ,文件 全 名 改為!file_name0!
- set file_prename=!file_prename: =_!&echo !file_prename!中的空格已經(jīng)改為_ ,文件名 改為!file_prename!
- set file_name1=!file_name0:%(=(!&echo !file_name0!中的括號已經(jīng)改為( ,文件 全 名 改為!file_name1!
- set file_prename1=!file_prename:%(=(!&echo 括號已經(jīng)改為( ,文件名 改為!file_prename1!
- set file_name2=!file_name1:%)=)!&echo !file_name1!中的括號已經(jīng)改為) ,文件 全 名 改為!file_name2!
- set file_prename2=!file_prename1:%)=)!&echo 括號已經(jīng)改為) ,文件名 改為!file_prename2!
- set file_name3=!file_name2:%+=:!&echo !file_name2!中的加號已經(jīng)改為: ,文件 全 名 改為!file_name3!
- set file_prename3=!file_prename2:%+=:!&echo 加號已經(jīng)改為: ,文件名 改為!file_prename3!
- ::以下語句ren沒有執(zhí)行
- ren !file_name! !file_name3!
- for%%a in (!file_name3!) do (
- set file_pre=4R%date:~2,2%%date:~5,2%%date:~8,2%_&echo file_pre= !file_pre!
- set file_new=!file_pre!!file_prename3!!file_suffix!!file_extname!&echo file_new= !file_new!
- )
- ren!file_name3! !file_new!
- echo %thefile%已經(jīng)閱讀完畢并更名為!file_new!
- )
- shift
- goto ADDREM
- :DEAL
- echo %%1 = %1
- :END
- echo OK
- pause
nclick="copycode($('code0'));">復(fù)制代碼