精华内容
下载资源
问答
  • Windows上是不能区分文件名大小写的。 对于经常处理Git事务的童鞋们来说,区分文件的大小写是非常有必要的。 操作步骤:见文章

    区分大小写的背景


    Linux上是可以区分大小写的,比如可以在Linux上创建abc和ABC两个文件;Mac OS上是可以通过配置实现区分文件的大小写的;但在Windows上是不能实现的。

    对于经常处理Git事务的童鞋们来说,区分文件的大小写是非常有必要的。

    Win10实现文件名区分大小写操作步骤


    Window10在四月更新,可以利用Dos命令对文件夹的属性进行更改。

    (1)打开路径C:\Windows\System32,右键使用管理员身份运行cmd.exe,如下图。
    在这里插入图片描述

    (2)对单个文件夹进行属性修改,使该文件夹能够对文件名区分大小写。如果想对多个文件夹进行修改,那么需要多次键入该命令行。

    fsutil.exe file SetCaseSensitiveInfo C:\Users\Desktop\GitProject enable
    

    (3)如果想关闭该文件夹对文件名区分大小写,则将enable改成disable即可。

    fsutil.exe file SetCaseSensitiveInfo C:\Users\Desktop\GitProject disable
    

    注意事项


    以上命令的成功运行条件,缺一不可:
    1.Win10需要四月更新版本
    2.安装有 Linux 子系统,即 Windows Subsystem for Linux
    3.所在分区为NTFS格式
    4.以管理员身份运行Dos或PowerShell

    fsutil命令参数


    在这里插入图片描述

    fsutil file支持的命令


    在这里插入图片描述


    参考文章:https://walterlv.com/post/case-sensitive-in-windows-file-system.html

    展开全文
  • 利用汇编语言编程实现,在已知以buf为首地址的字节存储区中,存放着一个以“$”为结束标志的字符串。编程在显示器上显示该字符串,并要求将小写字母以大写字母形式显示。data segment buf db 'Hello',13,10,'END...

    利用汇编语言编程实现,在已知以buf为首地址的字节存储区中,存放着一个以“$”为结束标志的字符串。编程在显示器上显示该字符串,并要求将小写字母以大写字母形式显示。

    data segment

     buf db 'Hello',13,10,'END$'

    data ends

    stack segment

     db 100 dup(0)

    stack ends

    code segment

    assume cs:code,ds:data,ss:stack

    begin:mov ax,data

          mov ds,ax

          lea bx,buf

     la:  mov dl,[bx]

          cmp dl,'$'

          jz exit    ;dl中字符是$则结束

          cmp dl,'a'

          jb k

          cmp dl,'z'

          ja k        ;dl中的字符不是小写,则转k处显示

          sub dl,20h  ;小写转换成大写

    k:    mov ah,2

          int 21h

          inc bx

          jmp la

    exit: mov ah,4ch

          int 21h

    code ends

         end begin

     

    code ends

    end  g1


    来源: 心倾城的网易博客
    欢迎分享本文,转载请保留出处!
    展开全文
  • C++大小写转换和性能

    万次阅读 2015-03-30 20:21:32
    本文主要讨论最基本的一些大小写转换函数和API,不讨论一些常见的字符串程序库里面的大小写转换接口,另外本文的落脚点是这些转换函数的性能和日常开发中遇到的一些问题。

    大小写转换和性能

     

     

     

    前言

    本文主要讨论最基本的一些大小写转换函数和API,不讨论一些常见的字符串程序库里面的大小写转换接口,另外本文的落脚点是这些转换函数的性能和日常开发中遇到的一些问题。

     

    不考虑范围

    其实ctype.h里面有定义一套宏,就是不考虑字符是否落在A-Za-z范围,直接计算(直接用加减法或者使用位与或计算,差别不是很大)。显然这样的效率是最高的,但是使用可能是有问题的,遇到中文或者其他友邦的一些字符,可能就转换错了,当然如果已经提前确认过输入会落在A-Za-z范围,则是可以使用这种方法计算的。

    #define _tolower(_Char)    ( (_Char)-'A'+'a' )

    #define _toupper(_Char)    ( (_Char)-'a'+'A' )

     

    C库(MS

    转小写

    tolower

    towlower

    _tolower_l

    _towlower_l

     

    转大写

    toupper

    towupper

    _toupper_l

    _towupper_l

     

    C库没有提供直接转换整个字符串的函数,都只能转换单个字符。另外要注意的是提供的towlowertowupper这两个函数效率出奇的低,为什么效率低没有去深究,反正tolowertoupper的参数是int,也可以用于宽字符版本,不知道为什么还提供towlowertowupper这两个函数。

     

    C++库(MS

    转小写

    errno_t _strlwr_s(char* str, size_t numberOfElements);

    errno_t _wcslwr_s(wchar_t* str, size_t numberOfElements);

     

    转大写

    errno_t _strupr_s(char* str, size_t numberOfElements);

    errno_t _wcsupr_s(wchar_t* str, size_t numberOfElements);

     

    同时还提供了一套同名的模版函数,可以直接只传递字符数组名进行转换,原理是利用数组引用推导出了数组大小,再调用原始转换函数,微软在字符串处理函数里面,使用了很多类似的小技巧(crtdefs.h)。

    注:带_s后缀的表示是安全转换。

    __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _wcslwr_s, __inout_ecount(_Size)wchar_t, _String)

     

    #define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName,_DstType, _Dst) \

        extern "C++" \

        { \

        template <size_t _Size> \

        inline \

        _ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size])\

        { \

            return _FuncName(_Dst, _Size);\

        } \

        }

     

    Windows API

    转小写

    CharLower

    CharLowerBuff

     

    转大写

    CharUpper

    CharUpperBuff

     

    WindowsAPI大部分都是一些宏,对应的多字节版本和宽字符版本在上面的API后面加上AW

     

    STL

    STL里面的string没有提供专门的转换接口,但是借助STL里面的算法用类似下面的方法实现(转换函数可以自定义,也可以使用系统提供的函数),这个不多说。

    transform(strCostInfo2.begin(), strCostInfo2.end(), strCostInfo2.begin(),::tolower);

    transform(strCostInfo2.begin(), strCostInfo2.end(), strCostInfo2.begin(),::toupper);

     

    自己实现(考虑范围)

    //

    static const char s_ch_a_minus_A = 'a' - 'A';

    inline char ConvToUpperA(char chConv)

    {

        return (chConv >= 'a' && chConv <= 'z')? (chConv & 0xdf) : chConv;

    }

    inline wchar_t ConvToUpperW(wchar_t wchConv)

    {

        return (wchConv >= L'a' && wchConv<= L'z') ? (wchConv & 0x00df) : wchConv;

    }

    inline char ConvToLowerA(char chConv)

    {

        return (chConv >= 'A' && chConv <= 'Z')? (chConv | 0x20) : chConv;

    }

    inline wchar_t ConvToLowerW(wchar_t wchConv)

    {

        return (wchConv >= L'A' && wchConv<= L'Z') ? (wchConv | 0x0020) : wchConv;

    }

     

    inline void ConvStrToUpperA(char* strConv)

    {

        for (size_t i = 0; strConv[i] != '\0'; ++i)

        {

            //if(strConv[i] >= 'a'&& strConv[i] <= 'z')

            //   strConv[i] &= 0xdf;

            strConv[i] = ConvToUpperA(strConv[i]);

        }

    }

    inline void ConvStrToUpperW(wchar_t* strConv)

    {

        for (size_t i = 0; strConv[i] != L'\0'; ++i)

        {

            //if(strConv[i] >=L'a' && strConv[i] <= L'z')

            //   strConv[i] &= 0x00df;

            strConv[i] = ConvToUpperW(strConv[i]);

        }

    }

     

    inline void ConvStrToLowerA(char* strConv)

    {

        for (size_t i = 0; strConv[i] != '\0'; ++i)

        {

            //if(strConv[i] >= 'A'&& strConv[i] <= 'Z')

            //   strConv[i]|= 0x20;

            strConv[i] = ConvToLowerA(strConv[i]);

        }

    }

    inline void ConvStrToLowerW(wchar_t* strConv)

    {

        for (size_t i = 0; strConv[i] != L'\0'; ++i)

        {

            //if(strConv[i] >=L'A' && strConv[i] <= L'Z')

            //   strConv[i] |= 0x0020;

            strConv[i] = ConvToLowerW(strConv[i]);

        }

    }

     

    和直接转换的区别就在于只对A-Za-z范围的字符进行转换,有一定局限性,但是在大部分场景下是可用的,而且效率够好。

     

    性能

    说了这么多转换方法,其实我最关心的那种方法的效率最高,直接上测试程序和测试环境吧,让数据说话。

     

    测试环境

    Windows7 x64 SP1

    AMD Phenom(tm) II X4 840T4核)

    10G内存

     

    测试基本方法

    对长度1024字节(不包括结尾0)的字符串进行大小写轮换转换,循环百万次,统计时间。

     

    测试结果

    ====>大小写转换函数时间消耗(循环1000000)<====

    直接计算(不考虑范围):[1077] 毫秒

    C库函数:[6193]毫秒

    C++库函数:[5912]毫秒

    STL算法库模版函数(自定义转换):[3557] 毫秒

    STL算法库模版函数(系统转换):[6146] 毫秒

    自定义的函数:[3791] 毫秒

    Windows API[13884] 毫秒

     

    ====>大小写转换函数时间消耗(循环1000000)<====

    直接计算(不考虑范围):[1076] 毫秒

    C库函数:[6272]毫秒

    C++库函数:[5865]毫秒

    STL算法库模版函数(自定义转换):[3292] 毫秒

    STL算法库模版函数(系统转换):[6053] 毫秒

    自定义的函数:[3666] 毫秒

    Windows API[13790] 毫秒

     

    多次测试结果表明,显然不考虑范围是最快的,但是可用场景太少,其次就是自定义的大小写转换函数了(像中文之类也没有大小写之说,只需要考虑有限的ascii字符),配合STL的容器和算法可以最大化效率。WindowsAPI的效率则比较低,当然效率低的原因并不是算法的问题,而是考虑的情况比较多,譬如要考虑本地化,考虑一些语种特殊的大小写转换问题等等。

    在合适的场景下,使用自定义的大小写转换是完全足够,研究这个花了大约半天时间,问题源于一个URL处理函数的性能问题,经过统计发现,这个函数的大量计算消耗在了URL转小写上面,经过改造之后,性能轻松提升60%

    <script type="text/javascript" src="http://js.tongji.linezing.com/3587820/tongji.js"></script>
    展开全文
  • wind10 文件名区分大小写

    万次阅读 2018-11-30 20:06:22
    Windows 10 四月更新,文件夹...Mac OS 默认不区分文件和文件夹大小写,不过可以配置成支持。而 Windows 向来是不区分文件和文件夹大小写的,但是从 NTFS 开始却又支持区分文件夹大小写。 本文将介绍 Windows 10 四...

    Windows 10 四月更新,文件夹名称也能区分大小写了

    发布于 2018-06-14 00:02 更新于 2018-09-01 00:03

    Linux 一向都是区分文件和文件夹大小写的。Mac OS 默认不区分文件和文件夹大小写,不过可以配置成支持。而 Windows 向来是不区分文件和文件夹大小写的,但是从 NTFS 开始却又支持区分文件夹大小写。

    本文将介绍 Windows 10 四月更新带来的新特性 —— 让文件夹名称也能区分大小写。


    问题

    本来文件系统是否区分大小写只是单纯风格上的差异,并没有孰优孰劣,但这可让那些跨平台的文件系统难以抉择了。典型的例子就是 Git。

    我曾经就遭遇过 Git 操作上的大小写敏感性问题,写了一篇博客:解决 Git 重命名时遇到的大小写不敏感的问题

    由于 Windows 文件系统对大小写不敏感,所以上面的问题才变得尤其难办,竟然需要通过至少两次提交,并且丢掉单线的 Git 历史记录的方式才能真正完成任务。而单纯让 Git 在仓库中区分大小写竟然会产生两份文件(却无法在 Windows 系统中观察到)。

    开启方法

    Windows 10 四月更新终于带来了文件夹区分大小写的支持!

    使用管理员权限在当前文件夹启动 PowerShell:

    fsutil.exe file SetCaseSensitiveInfo C:\Users\walterlv\GitDemo enable

    是的,就是上面这一段非常简单而容易理解的命令即可开启单个文件夹的名称区分大小写功能。只是单个文件夹!如果需要开启其他文件夹,需要多次执行这样的命令。

    而如果需要关闭对此文件夹的大小写支持,只需要将 enable 改为 disable

    fsutil.exe file SetCaseSensitiveInfo C:\Users\walterlv\GitDemo disable

    看!以上就是在 Windows 10 系统级开启了大小写敏感的我的一个 Git 仓库,这下可以让跨平台的 Git 工作起来在各个系统都一样了。

    注意事项

    以上命令的正确运行需要以下条件,缺一不可:

    1. Windows 10 四月更新(1803)
    2. 安装有 Linux 子系统,即 Windows Subsystem for Linux
    3. 所在分区为 NTFS 格式
    4. 以管理员权限运行 PowerShell

      Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

       

      fsutil.exe file setCaseSensitiveInfo D:\Study\Code enable
      fsutil.exe file setCaseSensitiveInfo D:\Study\Code disable

    如果没有安装 Linux 子系统,那么运行时会出现以下错误:

    错误:不支持该请求。

    ▲ 中文版 PowerShell

    The request is not supported.

    ▲ 英文版 PowerShell

    这个问题在 MicrosoftDocs 的 GitHub 仓库中被提到了:fsutil setCaseSensitiveInfo · Issue #977 · MicrosoftDocs/windowsserverdocs

    安装 Linux 子系统的方法可以参考微软官方文档:Install Windows Subystem for Linux (WSL) on on Windows 10。如果英文阅读有压力,可以参考毒逆天的博客:Win10 安装 Linux子系统 Ubuntu18.04 / Kali Linux 的体验

    简单点,就是管理员权限 PowerShell 敲个命令:

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

    或者命令都懒得敲,就是去商店下载(在商店搜索 Linux):


    fsutil file 支持的命令:

     ⚡ lvyi@walterlv.github.io> fsutil.exe file
    ---- FILE Commands Supported ----
    
    createNew                Creates a new file of a specified size
    findBySID                Find a file by security identifier
    layout                   Query all the information available about the file
    optimizeMetadata         Optimize metadata for a file
    queryAllocRanges         Query the allocated ranges for a file
    queryCaseSensitiveInfo   Query the case sensitive information for a directory
    queryExtents             Query the extents for a file
    queryExtentsAndRefCounts Query the extents and their corresponding refcounts for a file
    queryFileID              Queries the file ID of the specified file
    queryFileNameById        Displays a random link name for the file ID
    queryOptimizeMetadata    Query the optimize metadata state for a file
    queryValidData           Queries the valid data length for a file
    setCaseSensitiveInfo     Set the case sensitive information for a directory
    setShortName             Set the short name for a file
    setValidData             Set the valid data length for a file
    setZeroData              Set the zero data for a file
    setEOF                   Sets the end of file for an existing file
    setStrictlySequential    Sets ReFS SMR file as strictly sequential

    fsutil 支持的命令:

     ⚡ lvyi@walterlv.github.io> fsutil.exe
    ---- Commands Supported ----
    
    8dot3name       8dot3name management
    behavior        Control file system behavior
    dax             Dax volume management
    dirty           Manage volume dirty bit
    file            File specific commands
    fsInfo          File system information
    hardlink        Hardlink management
    objectID        Object ID management
    quota           Quota management
    repair          Self healing management
    reparsePoint    Reparse point management
    resource        Transactional Resource Manager management
    sparse          Sparse file control
    tiering         Storage tiering property management
    transaction     Transaction management
    usn             USN management
    volume          Volume management
    wim             Transparent wim hosting management
    展开全文
  • C++字母大小写转换方法

    万次阅读 多人点赞 2018-07-23 09:38:18
    字母大小写这个问题相对比较简单,总结了一些常用的大小写转换的方法,欢迎指正补充!...由表格可以看出,对应大小写字母之间相差32,由此可以衍生出以下编程的思路:   #include &lt;iostream&g...
  • 使用微PE安装Windows系统——给小白

    万次阅读 多人点赞 2018-07-19 17:19:33
    抛开硬件不谈,软件环境就是指系统,常见的系统包括Windows,Linux,Ubuntu和Mac Os等。在这里我们以安装窗口系统为例。   安装系统所需材料: 笔记本/台式机(即计算机硬件) û盘(容量8G及以上为佳) ...
  • 一个因MySQL大小写敏感导致的问题

    千次阅读 多人点赞 2019-06-12 23:56:47
    做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开! 分享一下大神老师的人工智能教程。零基础!...文章目录00 MYSQL对大小写敏感01 一个表字母大小故事lower_case_file_s...
  • C++常用的大小写转换的方法

    万次阅读 多人点赞 2019-03-20 20:29:01
    由表格可以看出,对应大小写字母之间相差32,由此可以衍生出以下编程的思路: 程序1.1 #include <iostream> using namespace std; int main() { char a[20]; int i = 0; cout<<"请输入一串...
  • 来自:... ... ...在前面 本文仅适合吾等技术小白,大神们请果断忽略之。 1、需求分析 为了提高效率,更好地完成期末网站作业,搭建ftp,实现组内资源共享。 2、所需软件 FileZill
  • 说实话,对于学习路线这种文章,一抓一堆,我也不大喜欢去建议别人究竟该怎么学习,学习顺序之类的。不过对于大学,很多人进入大学的时候,可能都是同一个起点,大学四年过后,却是完全不同的人生轨迹。正好我也想...
  • 关于Windows文件读写(提高读写速度)

    千次阅读 2011-11-16 15:59:33
    这几天在研究怎么才能加快windows文件读写速度,搜了很多文章,MSDN也看了不少。...平时我们在拷贝粘贴文件的时候,其实是用的windows本身的实现,其中有一个很的影响速度的地方就是它们都用了win
  • Windows10下利用Visual Studio Code搭建C语言开发环境

    万次阅读 多人点赞 2019-12-21 20:58:22
    Windows10下利用Visual Studio Code搭建C语言开发环境1. 前言2. 下载安装VSCode以及MinGW2.1 下载安装VSCode2.2 下载安装MinGW-w643. 添加VSCode的C语言开发插件4. 配置C语言开发环境4.1 配置c_cpp_properties.json...
  • Windows利用live555实现H264实时流RTSP发送

    万次阅读 热门讨论 2014-07-23 17:22:54
    文如其名,最近在做的项目要求利用RTSP协议转发处理完的H264视频数据给上一层客户端,环境是Windows的VS2013,于是就各种百度谷歌找代码。结果在得到利用live555去做比较简单的结论的同时也悲情地发现,网上别人贴...
  • 小白教程——Windows下用PHP一个简单的登录注册页面(一)
  • 一、概述性能监视,是Windows NT提供的一种系统功能。Windows NT一直以来总是集成了性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种对象提供了数百个性能计数器。性能对象,就是被监视的对象,典型...
  • 背景公司工作需要DOS批处理代码,扩展思考了下如何查找文件,花了我很精力才出此脚本,因而记录下。代码::关闭命令回显 @echo off ::变量延时绑定 setlocal enabledelayedexpansion ::请求输入文件名,支持...
  • 但我是个懒人,就算是这么简单的代码,有现成的就不想自己。 今天要说的是gcc本身已经提供了大小端的判断和数据转换的函数,真的没必要自己。gcc预定义宏判断大小端(Endian)先看看这个文章:查看gcc的默认宏定义
  • 整个系统采用客户机/服务器(C/S)模型,在Windows系统中,socket程序利用Visual C#语言编写。Linux系统中的socket程序调用select()函数,则该套接字自动设置为非阻塞方式,从而提高了程序的执行效率。经测试,通信两...
  • 最近听了网络安全老师的课,心血来潮,了个抓包程序Demo,把代码分享给大家,感兴趣的可以看看。引用一句网络安全老师的话:“你们要本着技术的心态去实践,哎,一部分人,着就成黑客了”。 #define _...
  • 1.利用windows的性能监视器测试存储性能 环境:windows server 2012 R2系统,IOmeter测试工具 可以保存到桌面 这边主要是输出的结果表现形式...
  • windows环境下面利用vscode搭建go语言开发环境 根据自己的电脑配置选择性进行下载,然后安装(记住安装路径),我的是E:\go 1.配置环境变量 GOROOT E:\go\ (这里是go语言安装的路径),配置的是系统变量 GOPATH F...
  • 作者:程序员小冰,CSDN博客:...当然,就像我们刚学习代码,hello world! 很简单,所以,慢慢从简单开始学习吧。这次介绍Frame的一个简单的用法。java最简单的知识之创建一个简单的windows窗口,利用F
  • 利用Windows 自带的任务计划功能设置闹钟

    万次阅读 热门讨论 2010-06-02 21:41:00
    相信很多人都会遇到这样一个麻烦,就是不知道如何在windows 中弄一个闹铃,当我们在开始所有程序、附件等处找了一遍又一遍,时钟没有发现“闹钟”两个字后,大多都会选择放弃,“看来Window不屑于做这个程序啊,我...
  • 当然,我的AHK脚本实现的功能比这个还要爽快——弹出一个输入框,直接粘贴一个ip地址,按回车就能实现代理设置。 Python脚本的源码(setProxy.py) 只要机器上安装了Python 2.x版本就行,不需要依赖安装和设置...
  • 基于I7500的ROM编译及对boot.img文件进行修改,需要个linux环境,我们这里正好可以应用它,不去重新装系统,再原有的系统基础上虚拟个linux出来。 1、下载于安装 VirtualBox的项目主页是 ...
  • Windows低权限下利用服务进行提权

    千次阅读 2018-09-01 10:48:06
    利用这个工具用来检查用户和用户组对文件,目录,注册表项,全局对象和系统服务的权限,在实际配置权限过程中,如果权限设置不当,那么win服务就可能被用于提权   AccessChk的具体介绍可以看这:...
  • 安装32位Windows 7和64位Windows Sever 2008R2 双系统图文教程——利用VHD技术   先说说为什么要装双系统:因为想用一个系统只是用来休闲娱乐上网,聊天,看视频等等,所以这个时候坚决抵制一切数据库服务自动...
  • 读与的方法是对称的。只是参数输入与输出的方向不同。读取文件内容一般用ZwReadFile,文件一般使用ZwWriteFile。 C++代码 NTSTATUS ZwReadFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, ...
  • 之前博客了MFC如何存储windowplacement这个结构体,我们用的是写入注册区。在win32 application中,也试图将信息写入注册区。但是越来越觉得小题大做,于是,还是写入.ini文件吧,写入和读取自己定义的.ini文件,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 272,866
精华内容 109,146
关键字:

windows可以利用大小写