MONTH变量现在有问题

如何解决MONTH变量现在有问题

我使用了一个简单的批处理文件来创建每日修改的工作文件存档。我已经使用了很多年,可能是通过Windows 2008 R2回到Windows 2000。我也刚刚在2019年9月开始在Windows 10桌面上使用它,但最近我注意到Windows 10中一定有所更改,这导致我的Month输出文件夹在月份名称之后有2个额外的,看似无效的字符,这导致我在Windows中遇到了一些问题。

我的代码是这个

@echo off
color 06

set FILE_DATE=%date:~4,2%-%date:~7,2%-%date:~10,4%
set YEAR=%date:~10,4%

REM Month Converter From Date Variable
SET MONTH=%DATE:~4,2% 
SET MONTH=%MONTH:01=01 January% 
SET MONTH=%MONTH:02=02 February%
SET MONTH=%MONTH:03=03 March%
SET MONTH=%MONTH:04=04 April%
SET MONTH=%MONTH:05=05 May%
SET MONTH=%MONTH:06=06 June%
SET MONTH=%MONTH:07=07 July%
SET MONTH=%MONTH:08=08 August%
SET MONTH=%MONTH:09=09 September%
SET MONTH=%MONTH:10=10 October%
SET MONTH=%MONTH:11=11 November%
SET MONTH=%MONTH:12=12 December%

ROBOCOPY "D:\Josh\Documents" "D:\Josh\Archives\%YEAR%\%MONTH%\%FILE_DATE%\Documents" /r:0 /w:0 /s /MAXAGE:1 /XF *.arb *.arf *.u$r *.db *.tmp *.prn *.uas *.pst

应该创建类似的文件夹结构

D:\Josh\Archives\2019\09 September\09-18-2019

但是看起来要输出的是

D:\Josh\Archives\2019\09 September  \09-18-2019

如果我要重命名文件夹,您会在名称中看到2个字符的空格。

Rename Space (Image)

如果我退格以删除文件夹名称中的字符,则会出现此错误。

Can't Rename (Image)

如果我尝试删除该文件夹,则会收到此错误。

Can't Find Error (Image)

如果我将month文件夹的内容移动到另一个文件夹,事情会变得很奇怪,相邻的文件夹也开始出现问题,包括文件消失。任何一个严重的问题。

该脚本仍可以在Windows Server R2上正常运行。我一直在网上进行挖掘,试图找出是否可能导致变量或Robocopy更改的某种方式导致了这种情况,但我想这只是我需要在代码中对Windows 10中的更改进行调整的一种方式,但是我可以似乎找不到解决方案。希望经验丰富的人可以为我指明正确的方向。感谢您的宝贵时间!

p.s。 -图像指向的是不同的文件夹,我在一段时间内做了此帖子,但条件是相同的。 Thx:)

解决方法

我不确定您是否知道,但是%DATE%是本地/语言相关的,因此无法依赖其输出以期望的格式提供一致的输出。

这是一个简单方法的示例,该方法使用两个for循环来生成基于日期的变量,而与用户,PC,语言环境或语言设置无关。

@Echo Off
SetLocal EnableExtensions
Color 06
For /F "Tokens=1-3 Delims=/ " %%G In ('"%__APPDIR__%Robocopy.exe \: . /NJH /L | %__APPDIR__%find.exe " 123""') Do Set "Today=%%H-%%I-%%G"
For /F "Tokens=%Today:~,2%" %%G In ("January February March April May June July August September October November December") Do Set "Month=%Today:~,2% %%G" 
"%__APPDIR__%Robocopy.exe" "D:\Josh\Documents" "D:\Josh\Archives\%Today:~-4%\%Month%\%Today%\Documents" /MaxAge:1 /R:0 /S /W:0 /XF *.arb *.arf *.u$r *.db *.tmp *.prn *.uas *.pst

如果您想使用中的进行尝试,下面是一个基本的单行示例,以帮助您入门:

@PowerShell.exe -NoProfile "Robocopy.exe \"D:\Josh\Documents\" \"D:\Josh\Archives\$(Get-Date -Format 'yyyy\\MM MMMM\\MM-dd-yyyy')\Documents\" /r:0 /w:0 /s /MAXAGE:1 /XF *.arb *.arf *.u$r *.db *.tmp *.prn *.uas *.pst"
,

照原样使用当前的robocopy命令,只需使用powershell来确定日期格式的月份,而无需手动手动指定每个月。

@echo off & color 06
for /f "tokens=1-4*" %%i in ('PowerShell -Command "& {Get-Date -format 'yyyy MM MMMM dd'}"') do (
   robocopy "D:\Josh\Documents" "D:\Josh\Archives\%%i\%%j %%k\%%j-%%l-%%i\Documents" /r:0 /w:0 /s /MAXAGE:1 /XF *.arb *.arf *.u$r *.db *.tmp *.prn *.uas *.pst
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-