cmd.exe and file name conversion from comman line argument

h_ono@ot.olympus.co.jp h_ono@ot.olympus.co.jp
Fri Jul 27 05:24:00 GMT 2018


Hello,

There is strange behavior when naming a file from command line argument in 
cmd.exe cosole,
using touch or mv.

I use:
touch (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)

cygwin1.dll version 2.10.0

in cmd.exe, doing

> touch aaa
and
> touch 'aaa'

give same file name aaa.

> ls
 aaa

but, when I use Japanese characters as file name, it gives different file 
names
with and without the quote.

> env LANG=ja_JP.UTF-8 touch あああ

gives

> env LANG=ja_JP.UTF-8 ls
  あああ

but,

> env LANG=ja_JP.UTF-8 touch 'あああ'

gives file name with quote not stripped.

> env LANG=ja_JP.UTF-8 ls
  'あああ'

If called from mintty + bash,

$ env LANG=ja_JP.UTF-8 touch 'あああ'

gives

$ env LANG=ja_JP.UTF-8 ls
  あああ

The problem is when I create a file containing spaces in its name.
Creating a file in cmd.exe like:

> env LANG=ja_JP.UTF-8 touch 'ああ あ'

gives

> env LANG=ja_JP.UTF-8 ls
"'ああ あ'"

(which is a file named 'ああ あ', not ああ あ)
It seems, there is no way to create a file containing a space in its name, 
like
 ああ あ
with commands such as touch or mv.

Is it a normal behavior, or a bug?
Is there any way to create a file containing Japanese characters and 
spaces in its name
without quote added?

FYI, With old cygwin (cygwin1.dll version 1.5.25), there were not such 
problem.
Even from cmd.exe,

> touch 'ああ あ'

gave a file named 'ああ あ' (without the quote in real.)
----------
Hiroo Ono

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list