【问题标题】:Batch to move and rename file (unknown source)批量移动和重命名文件(来源不明)
【发布时间】:2013-01-01 04:02:40
【问题描述】:

我制作了一个批处理脚本,通过将文件拖放到脚本上来移动和重命名文件。这将假设文件的源是未知的,但目标目录是。

我的解决方案是CD到目标目录,反转源文件名,使用带有反斜杠作为分隔符的for命令获得文件名,然后再次反转它,最后重命名。

只是想知道是否有更简单的解决方案。

@echo off

echo %1
set newSong=%1

cd "C:\Riot Games\League of Legends\RADS\projects\lol_air_client\releases\0.0.0.230\deploy\assets\sounds\ambient"

if not exist LoginScreenIntro.mp3.bak rename LoginScreenIntro.mp3 LoginScreenIntro.mp3.bak
del LoginScreenIntro.mp3

copy %newSong% "%CD%"

Call :ReverseString %newSong%
Set ReverseString.Result="%ReverseString.Result%"
for /f "tokens=1 delims=\" %%a in (%ReverseString.Result%) do set reversesong=%%a
Call :ReverseString "%reversesong%"
set newSong=%ReverseString.Result%

rename "%newSong%" LoginScreenIntro.mp3
pause


:ReverseString
  Set ReverseString.TempVar=%~1
  Set ReverseString.Result=
  :ReverseString.Loop
    Set ReverseString.Result=%ReverseString.TempVar:~0,1%%ReverseString.Result%
    Set ReverseString.TempVar=%ReverseString.TempVar:~1,999%
    if not "%ReverseString.TempVar%"=="" goto ReverseString.Loop
Goto :Eof

【问题讨论】:

    标签: batch-file rename move


    【解决方案1】:

    嘿,我只需要

    set newsong=%~n1%~x1
    

    【讨论】:

    • 其实你可以用%~nx1 :)
    • 不知道批处理变量标志是 C 类的!
    【解决方案2】:

    这个怎么样?

    ren %1 NewName.ext
    move %~dp1\NewName.ext NewDir
    

    【讨论】:

    • 当您将文件拖放到批处理脚本上时,完整路径和目录将包含在变量中。我想把这些东西去掉……我想我现在知道该怎么做了……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    相关资源
    最近更新 更多